Azure Functions ile OpenTelemetry kullanma

Bu makalede, işlev uygulamanızı günlük ve izleme verilerini OpenTelemetry biçiminde dışarı aktaracak şekilde yapılandırma işlemi gösterilmektedir. Azure Functions hem İşlevler konak işleminden hem de işlev kodunuzun çalıştırıldığı dile özgü çalışan işleminden işlev yürütmelerinizle ilgili telemetri verileri oluşturur. Varsayılan olarak, bu telemetri verileri Application Insights SDK'sı kullanılarak Application Insights'a gönderilir. Ancak, OpenTelemetry semantiği kullanarak bu verileri dışarı aktarmayı seçebilirsiniz. Verilerinizi Application Insights'a göndermek için openTelemetry biçimini kullanmaya devam edebilirsiniz ancak artık aynı verileri diğer OpenTelemetry uyumlu uç noktalara da aktarabilirsiniz.

İşlev uygulamanızda OpenTelemetry'yi etkinleştirerek bu avantajları elde edebilirsiniz:

  • Hem hostta hem de uygulama kodunuzda üretilen izler ve günlükler arasında veri bağıntısı kurar.
  • Dışarı aktarılabilir telemetri verilerinin tutarlı, standartlara dayalı bir şekilde oluşturulmasını sağlar.
  • OpenTelemetry uyumlu verileri kullanabilen diğer sağlayıcılarla tümleşir.

Bu makaleyi kullanırken şu noktaları göz önünde bulundurun:

  • OpenTelemetry ve Azure Functions ile hızlı bir şekilde başlamanıza yardımcı olmak için tasarlanan OpenTelemetry öğreticisi'ı deneyin. Bu makalede, dağıtılmış izleme için OpenTelemetry tümleştirmesi kullanan bir işlev uygulaması oluşturmak ve dağıtmak için Azure Geliştirici CLI'sı (azd) kullanılmaktadır.

  • Bu makale seçtiğiniz geliştirme dilini hedeflediğinden, makalenin en üstünde doğru dili seçmeyi unutmayın.

  • OpenTelemetry, hem konak yapılandırmasında (host.json) hem de kod projenizde işlev uygulaması düzeyinde etkinleştirilir. İşlevler ayrıca dile özgü bir çalışan işleminde çalışan işlev kodunuzdan OpenTelemetry verilerini dışarı aktarmak için istemci için iyileştirilmiş bir deneyim sağlar.

İşlevler ana bilgisayarında OpenTelemetry'yi etkinleştirme

İşlev uygulamasının host.json dosyasında OpenTelemetry çıkışını etkinleştirdiğinizde, uygulamanız tarafından kullanılan dil yığınından bağımsız olarak ana bilgisayarınız OpenTelemetry çıkışını dışarı aktarır.

İşlevler konağından OpenTelemetry çıkışını etkinleştirmek için kod projenizdeki host.json dosyasını güncelleştirerek kök koleksiyona bir "telemetryMode": "OpenTelemetry" öğe ekleyin. OpenTelemetry etkinleştirildiğinde, host.json dosyanız aşağıdaki gibi görünebilir:

{
    "version": "2.0",
    "telemetryMode": "OpenTelemetry",
    ...
}

Uygulama ayarlarını yapılandır

Dosyada OpenTelemetry'yi host.json etkinleştirdiğinizde, uygulamanın ortam değişkenleri, OpenTelemetry tarafından desteklenen uygulama ayarlarının kullanılabilir olduğu verileri göndermek için uç noktaları belirler.

İşlev uygulamanızda OpenTelemetry çıkış hedefine göre belirli uygulama ayarları oluşturun. Hem Application Insights hem de OpenTelemetry protokolü (OTLP) verme işlemi için bağlantı ayarları sağladığınızda, OpenTelemetry verileri her iki uç noktaya da gönderilir.

APPLICATIONINSIGHTS_CONNECTION_STRING: Application Insights çalışma alanının bağlantı dizesi. Bu ayar mevcut olduğunda, OpenTelemetry verileri bu çalışma alanına gönderilir. OpenTelemetry etkinleştirilmeden Application Insights'a bağlanmak için aynı ayarı kullanın. Uygulamanızda bu ayar yoksa Application Insights tümleştirmesini etkinleştirmeniz gerekebilir.

JAVA_APPLICATIONINSIGHTS_ENABLE_TELEMETRY: İşlevler ana bilgisayarının Java çalışan işleminin OpenTelemetry günlüklerini doğrudan akışla aktarmasına izin vermesi için true olarak ayarlanır ve bu da yinelenen konak düzeyi girdileri önler.

PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY: İşlevler ana bilgisayarının Python çalışan işleminin OpenTelemetry günlüklerini doğrudan akışına izin vermesi için true olarak ayarlanır ve bu da yinelenen konak düzeyi girdileri önler.

Uygulamanızda OpenTelemetry'yi etkinleştirme

İşlevler ana bilgisayarını OpenTelemetry kullanacak şekilde yapılandırdıktan sonra uygulama kodunuzu OpenTelemetry verilerinin çıktısını almak üzere güncelleştirin. Hem ana bilgisayarda hem de uygulama kodunuzda OpenTelemetry'yi etkinleştirdiğinizde, İşlevler ana bilgisayar süreci ile dil çalışma birimi süreci tarafından yayılmış olan izlemeler ve günlükler arasında daha iyi bir bağıntı elde edersiniz.

Uygulamanızın OpenTelemetry kullanımı için nasıl enstrüman edileceği, hedef OpenTelemetry uç noktanıza bağlıdır.

Bu makaledeki örneklerde, uygulamanızın IHostApplicationBuilder'i Microsoft.Azure.Functions.Worker 2.x ve sonraki sürümlerinde kullandığı varsayılmıştır. Daha fazla bilgi için C# yalıtılmış çalışan modeli kılavuzundaki Sürüm 2.x'e bakın.

  1. Uygulamanıza gerekli derlemeleri yüklemek için şu komutları çalıştırın:

    Uyarı

    Sürüm 3.0'dan başlayarak Microsoft.ApplicationInsights.WorkerService paketi Azure Monitor Exporter'dan yararlanıyor. OpenTelemetry dışarı aktarma dahil olmak üzere Azure Monitor işlem hattını dahili olarak kullanırken mevcut Application Insights yapılandırma davranışlarını korumak için bu paketi kullanabilirsiniz. Aşağıdaki örnekte gösterilen Microsoft.ApplicationInsights.WorkerService paketi yerine Azure.Monitor.OpenTelemetry.Exporter paketini (v3.0 veya üzeri) kullanabilirsiniz.

    dotnet add package Microsoft.Azure.Functions.Worker.OpenTelemetry
    dotnet add package OpenTelemetry.Extensions.Hosting 
    dotnet add package Azure.Monitor.OpenTelemetry.Exporter  
    
  2. Program.cs proje dosyanıza şu using deyimi ekleyin:

    using Azure.Monitor.OpenTelemetry.Exporter; 
    
  3. Projenizin başlatılmasında IHostBuilder veya IHostApplicationBuilder kullanılıp kullanılmadığına bağlı olarak OpenTelemetry'yi yapılandırın. İkincisi, yalıtılmış .NET çalışan modeli uzantısının v2.x dosyasında tanıtıldı.

    program.cs'da, şu kod satırının arkasına ConfigureFunctionsWebApplicationekleyin:

    builder.Services.AddOpenTelemetry()
        .UseFunctionsWorkerDefaults()
        .UseAzureMonitorExporter();
    

    Aynı uygulamadan her iki OpenTelemetry uç noktasına da dışarı aktarabilirsiniz.

  1. Gerekli kitaplıkları uygulamanıza ekleyin. Kitaplık ekleme yönteminiz, Maven veya Kotlin kullanarak dağıtım yapıp yapmadığınıza ve Application Insights'a da veri göndermek isteyip istemediğinize bağlıdır.

    <dependency>
      <groupId>com.microsoft.azure.functions</groupId>
      <artifactId>azure-functions-java-opentelemetry</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-monitor-opentelemetry-autoconfigure</artifactId>
      <version>1.2.0</version>
    </dependency>
    
  2. (İsteğe bağlı) Özel yayılma alanları oluşturmak için bu kodu ekleyin:

    import com.microsoft.azure.functions.opentelemetry.FunctionsOpenTelemetry;
    import io.opentelemetry.api.trace.Span;
    import io.opentelemetry.api.trace.SpanKind;
    import io.opentelemetry.context.Scope;
    
    Span span = FunctionsOpenTelemetry.startSpan(
            "com.contoso.PaymentFunction",  // tracer name
            "validateCharge",               // span name
            null,                           // parent = current context
            SpanKind.INTERNAL);
    
    try (Scope ignored = span.makeCurrent()) {
        // business logic here
    } finally {
        span.end();
    }
    
  1. Projenize şu npm paketlerini yükleyin:

    npm install @opentelemetry/api 
    npm install @opentelemetry/auto-instrumentations-node 
    npm install @azure/monitor-opentelemetry-exporter 
    npm install @azure/functions-opentelemetry-instrumentation
    
  1. Projenizde bir kod dosyası oluşturun, aşağıdaki kodu kopyalayıp bu yeni dosyaya yapıştırın ve dosyayı olarak src/index.jskaydedin:

    const { AzureFunctionsInstrumentation } = require('@azure/functions-opentelemetry-instrumentation');
    const { AzureMonitorLogExporter, AzureMonitorTraceExporter } = require('@azure/monitor-opentelemetry-exporter');
    const { getNodeAutoInstrumentations, getResourceDetectors } = require('@opentelemetry/auto-instrumentations-node');
    const { registerInstrumentations } = require('@opentelemetry/instrumentation');
    const { detectResourcesSync } = require('@opentelemetry/resources');
    const { LoggerProvider, SimpleLogRecordProcessor } = require('@opentelemetry/sdk-logs');
    const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
    
    const resource = detectResourcesSync({ detectors: getResourceDetectors() });
    
    const tracerProvider = new NodeTracerProvider({ resource });
    tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new AzureMonitorTraceExporter()));
    tracerProvider.register();
    
    const loggerProvider = new LoggerProvider({ resource });
    loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new AzureMonitorLogExporter()));
    
    registerInstrumentations({
        tracerProvider,
        loggerProvider,
        instrumentations: [getNodeAutoInstrumentations(), new AzureFunctionsInstrumentation()],
    });
    
  2. mainpackage.json dosyanızdaki alanı yeni src/index.js dosyayı içerecek şekilde güncelleştirin. Örneğin:

    "main": "src/{index.js,functions/*.js}"
    
  1. Projenizde bir kod dosyası oluşturun, aşağıdaki kodu kopyalayıp bu yeni dosyaya yapıştırın ve dosyayı olarak src/index.tskaydedin:

    import { AzureFunctionsInstrumentation } from '@azure/functions-opentelemetry-instrumentation';
    import { AzureMonitorLogExporter, AzureMonitorTraceExporter } from '@azure/monitor-opentelemetry-exporter';
    import { getNodeAutoInstrumentations, getResourceDetectors } from '@opentelemetry/auto-instrumentations-node';
    import { registerInstrumentations } from '@opentelemetry/instrumentation';
    import { detectResourcesSync } from '@opentelemetry/resources';
    import { LoggerProvider, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
    import { NodeTracerProvider, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node';
    
    const resource = detectResourcesSync({ detectors: getResourceDetectors() });
    
    const tracerProvider = new NodeTracerProvider({ resource });
    tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new AzureMonitorTraceExporter()));
    tracerProvider.register();
    
    const loggerProvider = new LoggerProvider({ resource });
    loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new AzureMonitorLogExporter()));
    
    registerInstrumentations({
        tracerProvider,
        loggerProvider,
        instrumentations: [getNodeAutoInstrumentations(), new AzureFunctionsInstrumentation()],
    });
    
  2. main package.json dosyanızdaki alanı, bu yeni src/index.ts dosyanın çıktısını içerecek şekilde güncelleştirin; bu aşağıdaki gibi görünebilir:

    "main": "dist/src/{index.js,functions/*.js}"
    

Önemli

Dil çalışanından Application Insights'a openTelemetry çıkışı şu anda PowerShell uygulamaları için desteklenmemaktadır. Bunun yerine bir OTLP ihracatçı uç noktası kullanmak isteyebilirsiniz. Barındırma sunucunuzu OpenTelemetry için Application Insights'a yapılandırdığınızda, PowerShell çalışan işlemi tarafından üretilen günlükler hala iletilir, ancak şu anda dağıtılmış izleme özelliği desteklenmemektedir.

Bu yönergeler yalnızca OTLP ihracatçısı için geçerlidir:

  1. OTEL_FUNCTIONS_WORKER_ENABLED adlı ve değeri True olan bir uygulama ayarı ekleyin.

  2. Uygulamanızın kökünde uygulama düzeyinde Modules bir klasör oluşturun ve aşağıdaki komutu çalıştırın:

    Save-Module -Name AzureFunctions.PowerShell.OpenTelemetry.SDK
    

    Bu komut, gerekli AzureFunctions.PowerShell.OpenTelemetry.SDK modülü doğrudan uygulamanıza yükler. requirements.psd1 dosyasını bu bağımlılığı otomatik olarak yüklemek için kullanamazsınız çünkü yönetilen bağımlılıklar şu anda Esnek Tüketim planı önizlemesinde desteklenmiyor.

  3. Bu kodu profile.ps1 dosyanıza ekleyin:

    Import-Module AzureFunctions.PowerShell.OpenTelemetry.SDK -Force -ErrorAction Stop 
    Initialize-FunctionsOpenTelemetry 
    
  1. Dosyanızda bu kütüphanelerin olduğundan emin olun: Yorum satırını kaldırarak ya da kendiniz ekleyerek.

    azure-monitor-opentelemetry
    
  2. Bu kodu ana giriş noktası dosyanıza function_app.py ekleyin:

    Uygulama ayarlarınıza zaten eklediyseniz PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY=true bu adımı atlayabilirsiniz. Application Insights koleksiyonunu otomatik izleme olmadan el ile etkinleştirmek için bu kodu uygulamanıza ekleyin:

    from azure.monitor.opentelemetry import configure_azure_monitor 
    configure_azure_monitor() 
    
  3. SDK'yi daha fazla yapılandırma seçenekleri için Azure Monitor Dağıtımı kullanım belgelerini gözden geçirin.

OpenTelemetry ile ilgili dikkat edilmesi gerekenler

OpenTelemetry kullanarak verilerinizi dışarı aktardığınızda, bu konuları göz önünde bulundurun.

  • Azure portalı, yalnızca telemetri Azure Monitor'e gönderildiğinde Recent function invocation izlemelerini destekler.

  • Konağı OpenTelemetry kullanacak şekilde yapılandırdığınızda, Azure Portal log akışını desteklemez.

  • telemetryMode olarak ayarlarsanız, host.json bölümündeki OpenTelemetry yapılandırması uygulanmaz.

  • Özel spanlar otomatik olarak tüm kaynak özniteliklerini içerir ve uygulamanızda yapılandırılan ihracatçıları kullanır.

  • Uygulamanız yerel geliştirme sırasında da dahil olmak üzere Azure dışında çalıştığında, kaynak algılayıcısı varsayılan olarak service.name özniteliğini java-function-app olarak ayarlar.

  • Birim testleri sırasında yerel olarak çalışırken telemetriyi susturmak için şu Java Sanal Makine (JVM) bayraklarını kullanın:

    • -Dotel.traces.exporter=none
    • -Dotel.metrics.exporter=none
    • -Dotel.logs.exporter=none
  • Ara yazılımı el ile kaydetmeniz gerekmez; Java çalışanı OpenTelemetryInvocationMiddleware otomatik olarak keşfeder.

Kaynak algılayıcıları ve anlam kuralları

Azure Functions'de kaynak öznitelikleri işlev uygulaması işlemini ve ortamını açıklar. Span öznitelikleri tek bir çağrıyı açıklar.

Varsayılan davranış (eylem gerekmez)

App Service'teki Azure Functions kaynak algılayıcıları genellikle aşağıdakiler dahil olmak üzere ortak öznitelikleri otomatik olarak doldurur:

  • service.name (varsayılan olarak işlev uygulaması adını kullanır)
  • Azure bulut öznitelikleri, cloud.provider, cloud.region ve cloud.resource_id gibi

Çoğu durumda, bu varsayılanlar doğru Uygulama Eşlemesi gruplandırma ve Azure bağlamı için yeterlidir.

Ne zaman service.name (Bulut Rolü Adı) geçersiz kılınmalı

Yalnızca Application Insights'ta (Application Map gruplandırma) farklı, kararlı bir düğüm adına ihtiyacınız varsa( örneğin, yuvalar veya ortamlar arasında adlandırmayı normalleştirmek için) geçersiz kılın.

Algılanan değeri geçersiz kılmak için ayarlayın OTEL_SERVICE_NAME :

export OTEL_SERVICE_NAME="my-function-app"

Çağırma aralığı öznitelikleri (genellikle otomatik)

Özel çağrı aralığı oluşturmadığınız sürece bunları el ile ayarlamanız gerekmez.

  • faas.name (işlev adı)
  • faas.trigger (örneğin http, servicebus, eventhubs)
  • faas.execution (çağırma/yürütme tanımlayıcısı)

Önemli

İşlev uygulamaları birden çok işlevi tek bir işlemde barındırabilir. Kaynağa işleve özgü değerler koymayın. Her çağrı için kimliği span'lara yerleştirin.

Uyarı

Yerel olarak (İşlevler Temel Araçları) veya Azure meta verilerinin kullanılamadığı kapsayıcılı/şirket içinde barındırılan ortamlarda çalışırken, service.name varsayılan olarak genel bir değere sahip olabilir. Üretimdeki isimlendirmeyle eşleşecek şekilde OTEL_SERVICE_NAME yerel olarak ayarla.

Sorun giderme

OpenTelemetry kullanarak verilerinizi dışarı aktardığınızda, bu yaygın sorunları ve çözümleri göz önünde bulundurun.

Günlük filtreleme

İşlev uygulamanızda günlük filtrelemeyi doğru yapılandırmak için ana bilgisayar süreci ile çalışan süreci arasındaki farkı anlamanız gerekir.

ana bilgisayar işlemi, tetikleyicileri yöneten, ölçeklendiren ve başlatma günlükleri, istek izlemeleri ve çalışma zamanı sistem durumu bilgileri gibi sistem düzeyinde telemetriyi sağlayan Azure Functions çalışma zamanıdır.

Çalışan işlemi dile özgüdür, işlev kodunuzu yürütür ve uygulama günlüklerini ve telemetri verilerini bağımsız olarak üretir.

Önemli

host.json'de tanımlanan filtreler yalnızca konak işlemi tarafından oluşturulan günlüklere uygulanır. Çalışan işleminden günlükleri filtrelemek için dile özgü OpenTelemetry ayarlarını kullanmanız gerekir.

Örnek: host.json'daki tüm sağlayıcılar için konak günlüklerini filtreleme

Ana bilgisayar tarafından yönetilen tüm sağlayıcılarda küresel günlük seviyesini ayarlamak için bu yaklaşımı kullanın.

{
  "version": "2.0",
  "telemetryMode": "OpenTelemetry",
  "logging": {
    "logLevel": {
      "default": "Warning"
    }
  }
}

Örnek: Günlükleri yalnızca OpenTelemetry günlükçü sağlayıcısı için filtreleyin

Diğer sağlayıcıları (konsol veya dosya günlüğü gibi) etkilenmeden bırakırken yalnızca OpenTelemetry günlükçü sağlayıcısını hedeflemek için bu yaklaşımı kullanın:

{
  "version": "2.0",
  "telemetryMode": "OpenTelemetry",
  "logging": {
    "OpenTelemetry": {
      "logLevel": {
        "default": "Warning"
      }
    }
  }
}

Konsol loglama

İşlevler konağı, stdout veya stderr'a yazılan her şeyi otomatik olarak yakalar ve telemetri işlem hattına iletir. ConsoleExporter da kullanıyorsanız veya kodunuzdaki konsola doğrudan yazıyorsanız telemetri verilerinizde yinelenen günlükler oluşabilir.

Uyarı

Yinelenen telemetri girdilerini önlemek için ConsoleExporter eklemeyin veya üretim kodunda konsola yazmayın.

Microsoft Entra kimlik doğrulaması

OpenTelemetry ile Microsoft Entra kimlik doğrulaması kullandığınızda, kimlik doğrulamasını hem konak işlemi hem de çalışan işlemi için ayrı olarak yapılandırmanız gerekir.

Ana bilgisayar süreci için kimlik doğrulamasını yapılandırmak adına Microsoft Entra kimlik doğrulamasını gerektir başlıklı bölüme bakın.

Çalışan işlemi için kimlik doğrulamasını yapılandırmak üzere Microsoft Entra kimlik doğrulamasını etkinleştir bölümüne bakın.

Kaynak öznitelikleri desteği

Azure Monitor'da kaynak öznitelikleri desteği şu anda önizleme aşamasındadır. Bu özelliği etkinleştirmek için ortam değişkenini OTEL_DOTNET_AZURE_MONITOR_ENABLE_RESOURCE_METRICS olarak trueayarlayın. Bu ayar kaynak özniteliklerini özel ölçümler tablosuna alır.

Yinelenen istek telemetrisi

Ana bilgisayar işlemi, istek telemetrisini otomatik olarak oluşturur. Çalışan işlemi istek izleme kitaplıklarıyla da izleniyorsa (örneğin, .NET AspNetCoreInstrumentation), aynı istek iki kez bildirilir.

Uyarı

Azure Monitor Distro genellikle .NET AspNetCoreInstrumentation ve diğer dillerde benzer izleme içerdiğinden, yinelenen telemetriyi önlemek için çalışan süreci içinde Azure Monitor dağıtımını kullanmayın.

Loglama kapsamları dahil değil

Varsayılan olarak, çalışan işlemi günlüklerine kapsam içermez. Kapsamları etkinleştirmek için bu ayarı çalışanda açıkça yapılandırmanız gerekir. .NET Yalıtılmış'ta kapsamların nasıl etkinleştirileceğini gösteren aşağıdaki örnek:

builder.Logging.AddOpenTelemetry(b => b.IncludeScopes = true);

Eksik istek telemetrisi

HTTP, Service Bus ve Event Hubs gibi tetikleyiciler, dağıtılmış izleme sistemleri için bağlam aktarımına bağlıdır. Varsayılan davranış olarak üst tabanlı örnekleme kullanıldığında, gelen istek veya ileti örneklenmemişse istek telemetrisi oluşturulmaz.

Yinelenen OperationId

Azure Functions'de, telemetriyi ilişkilendirmek için kullanılan OperationId doğrudan gelen istek veya iletideki traceparent değerinden gelir. Birden çok çağrı aynı traceparent değeri yeniden kullandığında, hepsi aynı OperationIdolur.

OpenTelemetry'yi ortam değişkenleriyle yapılandırma

OpenTelemetry davranışını, standart ortam değişkenlerini kullanarak yapılandırabilirsiniz. Bu değişkenler, farklı diller ve çalışma zamanlarında davranışı denetlemek için tutarlı bir yol sağlar. Örnekleme stratejilerini, dışarı aktarma ayarlarını ve kaynak özniteliklerini ayarlayabilirsiniz. Desteklenen ortam değişkenleri hakkında daha fazla bilgi için OpenTelemetry belgelerine bakın.

İzleme sorunlarını gidermek için tanılamayı kullanma

Azure portalındaki Azure Functions tanılama, izlemeyle ilgili olası sorunları algılamak ve tanılamak için yararlı bir kaynaktır.

Uygulamanızda tanılamaya erişmek için:

  1. Azure portalında işlev uygulaması kaynağınıza gidin.

  2. Sol bölmede Sorunları tanıla ve çöz seçeneğini seçin ve İşlev Uygulaması telemetrisinin eksik olduğu Application Insights veya OpenTelemetry iş akışını arayın.

  3. Bu iş akışını seçin, alma yönteminizi seçin ve İleri'yi seçin.

  4. Sorun giderici tarafından sağlanan yönergeleri ve önerileri gözden geçirin.

Sonraki Adımlar

Azure Functions ve OpenTelemetry izleme hakkında daha fazla bilgi edinin.