Aracılığıyla paylaş


Ö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), , dependencytrace (günlük) veya exceptionöğesinden requestbiri 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 regexpolabilirstrict. 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:

Örnek: Sistem durumu denetimleri için telemetrinin toplanmasını engelleme

Bu örnek, öğesine yapılan tüm istekler için telemetrinin toplanmasını /health-checksbastırır.

Bu örnek, altında normalde toplanacak aşağı akış aralıklarının (bağımlılıklar) toplandığını /health-checksda 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 /logintelemetri 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 fileolabilir. Uygulama Analizler günlüklerine bakın ve uyarı iletileri görüp görmediğinize bakın.