Örnekleme geçersiz kılmaları - Java için Azure İzleyici Uygulama Analizler
Not
Örnekleme geçersiz kılma özelliği, 3.5.0'dan başlayarak GA'dadır.
Örnekleme geçersiz kılmaları, varsayılan örnekleme yüzdesini geçersiz kılmanıza olanak sağlar, örneğin:
- Gürültülü sistem durumu denetimleri için örnekleme yüzdesini 0 (veya küçük bir değer) olarak ayarlayın.
- Gürültülü bağımlılık çağrıları için örnekleme yüzdesini 0 (veya küçük bir değer) olarak ayarlayın.
- Varsayılan örneklemeyi daha düşük bir değere yapılandırmış olsanız bile, önemli bir istek türü (örneğin,
/login
) için örnekleme yüzdesini 100 olarak ayarlayın.
Terminoloji
Örnekleme geçersiz kılmaları hakkında bilgi edinmeden önce span terimini anlamanız gerekir. Span, aşağıdakiler için genel bir terimdir:
- Gelen istek.
- Giden bağımlılık (örneğin, başka bir hizmete uzaktan çağrı).
- İşlem içi bağımlılık (örneğin, hizmetin alt bileşenleri tarafından yapılan çalışma).
Örnekleme geçersiz kılmaları için bu span bileşenleri önemlidir:
- Özellikler
Span öznitelikleri, belirli bir isteğin veya bağımlılığın hem standart hem de özel özelliklerini temsil eder.
Başlarken
Başlamak için applicationinsights.json adlı bir yapılandırma dosyası oluşturun. Bunu applicationinsights-agent-*.jar ile aynı dizine kaydedin. Aşağıdaki şablonu kullanın.
{
"connectionString": "...",
"sampling": {
"percentage": 10,
"overrides": [
{
"telemetryType": "request",
"attributes": [
...
],
"percentage": 0
},
{
"telemetryType": "request",
"attributes": [
...
],
"percentage": 100
}
]
}
}
Nasıl çalışır?
telemetryType
(telemetryKind
Uygulama Analizler 3.4.0'da), , dependency
trace
(günlük) veya exception
öğesinden request
biri olmalıdır.
Bir yayılma alanı başlatıldığında, örnekleme geçersiz kılmalarından herhangi birinin eşleşip eşleşmediğini denetlemek için span türü ve o anda üzerinde bulunan öznitelikler kullanılır.
Eşleşmeler veya regexp
olabilirstrict
. Normal ifade eşleşmeleri öznitelik değerinin tamamıyla gerçekleştirilir, bu nedenle içinde herhangi bir yeri içeren abc
bir değerle eşleştirmek istiyorsanız kullanmanız .*abc.*
gerekir.
Örnekleme geçersiz kılma birden çok öznitelik ölçütü belirtebilir; bu durumda örnekleme geçersiz kılmasının eşleşmesi için bunların tümünün eşleşmesi gerekir.
Örnekleme geçersiz kılmalarından biri eşleşiyorsa, örnekleme yüzdesi, yayılma alanının örneklenip örneklenmeyeceğine karar vermek için kullanılır.
Yalnızca eşleşen ilk örnekleme geçersiz kılma kullanılır.
Örnekleme geçersiz kılmaları eşleşmiyorsa:
- İzlemedeki ilk yayılma alanıysa en üst düzey örnekleme yapılandırması kullanılır.
- İzlemedeki ilk yayılma alanı değilse, üst örnekleme kararı kullanılır.
Örnek: Sistem durumu denetimleri için telemetrinin toplanmasını engelleme
Bu örnek, öğesine yapılan tüm istekler için telemetrinin toplanmasını /health-checks
bastırır.
Bu örnek, altında normalde toplanacak aşağı akış aralıklarının (bağımlılıklar) toplandığını /health-checks
da gizler.
{
"connectionString": "...",
"sampling": {
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "url.path",
"value": "/health-check",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
Örnek: Gürültülü bir bağımlılık çağrısı için telemetrinin toplanmadığını gösterme
Bu örnek, tüm GET my-noisy-key
redis çağrıları için telemetrinin toplanmasını bastırır.
{
"connectionString": "...",
"sampling": {
"overrides": [
{
"telemetryType": "dependency",
"attributes": [
{
"key": "db.system",
"value": "redis",
"matchType": "strict"
},
{
"key": "db.statement",
"value": "GET my-noisy-key",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
Örnek: Önemli bir istek türü için telemetri verilerinin %100'ünün toplanması
Bu örnek için /login
telemetri verilerinin %100'lerini toplar.
Aşağı akış yayılma alanları (bağımlılıklar) üst öğeye ait örnekleme kararına uygun olduğundan (bu aşağı akış yayılması için örnekleme geçersiz kılma yok), tüm '/login' istekleri için de toplanır.
{
"connectionString": "...",
"sampling": {
"percentage": 10
},
"sampling": {
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "url.path",
"value": "/login",
"matchType": "strict"
}
],
"percentage": 100
}
]
}
}
Örnekleme için kullanılabilen span öznitelikleri
Span öznitelik adları OpenTelemetry semantik kurallarını temel alır. (HTTP, Mesajlaşma, Veritabanı, RPC)
https://github.com/open-telemetry/semantic-conventions/blob/main/docs/README.md
Not
Uygulamanız için Application Analizler Java tarafından yakalanan özniteliklerin tam kümesini görmek için kendi kendine tanılama düzeyini hata ayıklamak üzere ayarlayın ve "dışarı aktarma aralığı" metniyle başlayan hata ayıklama iletilerini arayın.
Not
Yalnızca yayılma alanının başında ayarlanan öznitelikler örnekleme için kullanılabilir, bu nedenle daha sonra yakalanan veya istek süresi gibi http.response.status_code
öznitelikler OpenTelemetry Java uzantıları aracılığıyla filtrelenebilir. burada, istek süresine göre yayılanları filtreleyen örnek bir uzantı verilmiştir.
Sorun giderme
Kullanıyorsanız regexp
ve örnekleme geçersiz kılması çalışmıyorsa, regex ile .*
deneyin. Örnekleme şimdi çalışıyorsa, ilk regex ile ilgili bir sorununuz olduğu ve bu regex belgelerini okuduğunuz anlamına gelir.
ile .*
çalışmazsa, içinde bir söz dizimi sorununuz application-insights.json file
olabilir. Uygulama Analizler günlüklerine bakın ve uyarı iletileri görüp görmediğinize bakın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin