Aracılığıyla paylaş


OpenTelemetry ve etkinlik izlemelerini kullanma

Veri API oluşturucusu (DAB), dağıtılmış izleme ve ölçümler için OpenTelemetry'yi destekleyerek REST, GraphQL, veritabanı işlemleri ve iç ara yazılım genelinde davranışı izlemenizi ve tanılamanızı sağlar.

OpenTelemetry akışını gösteren diyagram.

Önkoşullar

  • Mevcut DAB yapılandırma dosyası.
  • OpenTelemetry toplayıcısını veya arka ucu çalıştırma (örneğin, Azure İzleyici veya Jaeger).
  • Veri API'si oluşturucu CLI. CLI'yi yükleme

Aracı çalıştır

OpenTelemetry ayarlarını yapılandırmanıza eklemek için kullanın dab add-telemetry .

  1. Yapılandırma dosyanız olduğundan emin olun. Eğer bir tane oluşturmanız gerekiyorsa, şu komutu çalıştırın:

    dab init \
        --database-type mssql \
        --connection-string "<sql-connection-string>"
    
  2. OpenTelemetry ayarlarını yapılandırma dosyanıza ekleyin.

    dab add-telemetry \
        -c dab-config.json \
        --otel-enabled true \
        --otel-endpoint "http://localhost:4317" \
        --otel-protocol "grpc" \
        --otel-service-name "dab"
    
  3. DAB'ı başlatın.

    dab start
    

Telemetri arka ucunuzda test edin

  1. OpenTelemetry arka ucunuzu veya toplayıcı kullanıcı arabiriminizi açın.

  2. REST, GraphQL veya veritabanı çağrıları için izlemelerin ve ölçümlerin geldiğini onaylayın.

Uyarı

.NET Aspire panosu, geliştirici döngüsünün ideal bir parçasıdır. OpenTelemetry izlemeleri ve ölçümleri için yerleşik görünümler içerir.

Veri API oluşturucu izlemeleri

DAB aşağıdakiler için OpenTelemetry "etkinlikleri" oluşturur:

  • Gelen HTTP istekleri (REST uç noktaları)
  • GraphQL işlemleri
  • Veritabanı sorguları (varlık başına)
  • İç ara yazılım adımları (örneğin, istek işleme, hata izleme)

Her etkinlik, aşağıdakiler gibi ayrıntılı etiketler (meta veriler) içerir:

  • http.method, http.url, http.querystring, status.code
  • action.type (CRUD, GraphQL işlemi)
  • user.role, user-agent
  • data-source.type, data-source.name
  • api.type (REST veya GraphQL)

Hatalar ve özel durumlar ayrıntılı bilgilerle de izlenir.

Veri API'si oluşturucu ölçümleri

DAB, openTelemetry ölçümlerini gösterir; örneğin:

  • Toplam İstek sayısı: HTTP yöntemi, durum, uç nokta ve API türüyle etiketlenmiş sayaç.
  • Hatalar: Hata türü, HTTP yöntemi, durum, uç nokta ve API türüne göre etiketlenmiş sayaç.
  • İstek Süresi: HTTP yöntemi, durum, uç nokta ve API türüyle etiketlenmiş histogram (milisaniye cinsinden).
  • Etkin İstekler: Eşzamanlı istekler için yukarı/aşağı sayacı.

Ölçümler .NET Meter API'sini ve OpenTelemetry SDK'sını kullanır.

Configuration

Yapılandırma dosyanızın altına open-telemetry bir ekleyin.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://otel-collector:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

Command-line

dab add-telemetry aracılığıyla OpenTelemetry'yi yapılandırın.

  • --otel-enabled
  • --otel-endpoint
  • --otel-protocol
  • --otel-service-name
  • --otel-headers

Example

dab add-telemetry \
    -c dab-config.json \
    --otel-enabled true \
    --otel-endpoint "http://localhost:4317" \
    --otel-protocol "grpc" \
    --otel-service-name "dab"

Sonuçta elde edilen yapılandırma

Uyarı

OpenTelemetry seçenekleri dab configure üzerinde mevcut değil.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://localhost:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

Dışarı aktarma ve görselleştirme

Telemetri, .NET OpenTelemetry SDK'sı aracılığıyla Azure İzleyici veya Jaeger gibi yapılandırılmış arka uca aktarılır. Arka ucun çalıştığından ve belirtilen endpoint konumunda erişilebilir olduğundan emin olun. Görselleştirme için OpenTelemetry uyumlu herhangi bir arka ucu kullanabilirsiniz.

OpenTelemetry SDK'sı dışarı aktarma zamanlamasını denetler. Etkinlikler tamamlandığında izleri dışarı aktarır. Ölçümleri SDK tarafından yapılandırılan düzenli aralıklarla dışarı aktarır. Aralık ayarlamazsanız SDK varsayılan değerini kullanır.

Uyarı

Kısa ömürlü ve hızla kapanan kapsayıcılar, dışa aktarma işlemleri tamamlanmadan önce çıkabilir. Zarif bir kapatma süresi tanıyın ve bekleyen telemetrinin temizlenebilmesi için erken sonlandırmayı önleyin.

Uygulama notları

  • İzlemeler ve ölçümler tüm REST, GraphQL ve veritabanı işlemlerini kapsar
  • Ara yazılım ve hata işleyicileri de telemetri yayar
  • Bağlam istekler aracılığıyla yayılır