Aracılığıyla paylaş


Node.js Application Insights SDK 2.X'ten Azure İzleyici OpenTelemetry'ye geçiş

Bu kılavuz, Azure İzleyici Application Insights Node.js SDK 2.X'ten OpenTelemetry'ye yükseltmek için iki seçenek sağlar.

  • Azure İzleyici OpenTelemetry Distro Node.js temiz yükleyin.
    • Application Insights klasik API'sinde bağımlılıkları kaldırın.
    • OpenTelemetry API'leri ve terimleri hakkında bilgi sahibi olun.
    • Kendinizi openTelemetry'nin sunduğu tüm teklifleri şimdi ve gelecekte kullanacak şekilde konumlandırın.
  • Node.js SDK 3.X'e yükseltin .
    • Mevcut özel olaylar ve ölçümlerle uyumluluğu korurken kod değişikliklerini erteleyin.
    • Daha zengin OpenTelemetry izleme kitaplıklarına erişin.
    • En son hata ve güvenlik düzeltmeleri için uygunluğu koruyun.
  1. OpenTelemetry JavaScript Uygulama Programlama Arabirimi (API) ve Yazılım Geliştirme Seti (SDK) hakkında önkoşul bilgisi elde edin.

    • OpenTelemetry JavaScript belgelerini okuyun.
    • Azure İzleyici OpenTelemetry'yi yapılandırma'ya bakın.
    • OpenTelemetry ekleme, değiştirme ve filtrelemeyi değerlendirin.
  2. applicationinsights Bağımlılığı projenizden kaldırın.

    npm uninstall applicationinsights
    
  3. SDK 2.X uygulamasını kodunuzdan kaldırın.

    Kodunuzdan tüm Application Insights izlemesini kaldırın. Application Insights istemcisinin başlatıldığı, değiştirildiği veya çağrıldığı bölümleri silin.

  4. Azure İzleyici OpenTelemetry Distro ile Application Insights'u etkinleştirin.

    Önemli

    Başka useAzureMonitor bir şeyi içeri aktarmadan önce çağrılmalıdır. Önce başka kitaplıklar içeri aktarılırsa telemetri kaybı olabilir. Azure İzleyici OpenTelemetry Distro'ya eklemeye başlamayı izleyin.

Azure İzleyici OpenTelemetry Distro değişiklikleri ve sınırlamaları

  • Application Insights SDK 2.X'teki API'ler Azure İzleyici OpenTelemetry Distro'da kullanılamaz. Application Insights SDK 3.X'teki bölünemez bir yükseltme yolu aracılığıyla bu API'lere erişebilirsiniz.
  • Bağımlılıkları, günlükleri ve özel durumları işlem adına göre filtreleme henüz desteklenmiyor.

Değişiklikler ve sınırlamalar

Aşağıdaki değişiklikler ve sınırlamalar her iki yükseltme yolu için de geçerlidir.

Node.js sürüm desteği

Node.js sürümünün ApplicationInsights 3.X SDK tarafından desteklenmesi için hem Azure SDK'sından hem de OpenTelemetry'den çakışan desteğe sahip olması gerekir. En son güncelleştirmeler için OpenTelemetry tarafından desteklenen çalışma zamanlarını denetleyin. Daha önce ApplicationInsights SDK tarafından desteklenen Node 8 gibi eski sürümlerdeki kullanıcılar OpenTelemetry çözümlerini kullanmaya devam edebilir, ancak beklenmeyen veya hataya neden olan davranışlarla karşılaşabilir. ApplicationInsights SDK'sı, kullanım süresi sonuna ulaşmış Node.js sürümleri için destek garantisi vermeyen JS için Azure SDK'ya da bağlıdır. Bkz . JS için Azure SDK destek ilkesi. Node.js sürümünün ApplicationInsights 3.X SDK tarafından desteklenmesi için hem Azure SDK'sından hem de OpenTelemetry'den çakışan desteğe sahip olması gerekir.

Yapılandırma seçenekleri

Application Insights SDK sürüm 2.X, Azure İzleyici OpenTelemetry Distro'da veya Application Insights SDK 3.X'e ana sürüm yükseltmesinde bulunmayan yapılandırma seçenekleri sunar. Bu değişiklikleri ve hala desteklediğimiz seçenekleri bulmak için SDK yapılandırma belgelerine bakın.

Genişletilmiş ölçümler

Genişletilmiş ölçümler Application Insights SDK 2.X'te desteklenir; ancak bu ölçümler için destek hem ApplicationInsights SDK'sının 3.X sürümünde hem de Azure İzleyici OpenTelemetry Distro'da sona erer.

Telemetri İşlemcileri

Azure İzleyici OpenTelemetry Distro ve Application Insights SDK 3.X, TelemetryProcessors'ı desteklemese de, span ve günlük kaydı işlemcilerini geçirmenize olanak sağlar. Nasıl olduğu hakkında daha fazla bilgi için bkz . Azure İzleyici OpenTelemetry Distro projesi.

Bu örnekte, Application Insights SDK 2.X'te özel bir özellik ekleyen bir telemetri işlemcisi oluşturma ve uygulama eşdeğeri gösterilmektedir.

const applicationInsights = require("applicationinsights");
applicationInsights.setup("YOUR_CONNECTION_STRING");
applicationInsights.defaultClient.addTelemetryProcessor(addCustomProperty);
applicationInsights.start();

function addCustomProperty(envelope: EnvelopeTelemetry) {
    const data = envelope.data.baseData;
    if (data?.properties) {
        data.properties.customProperty = "Custom Property Value";
    }
    return true;
}

Bu örnekte, dağıtım yapılandırmasına bir SpanProcessor geçirmek için Azure İzleyici OpenTelemetry Distro uygulamasının nasıl değiştirileceği gösterilmektedir.

import { Context, Span} from "@opentelemetry/api";
import { ReadableSpan, SpanProcessor } from "@opentelemetry/sdk-trace-base";
const { useAzureMonitor } = require("@azure/monitor-opentelemetry");

class SpanEnrichingProcessor implements SpanProcessor {
    forceFlush(): Promise<void> {
        return Promise.resolve();
    }
    onStart(span: Span, parentContext: Context): void {
        return;
    }
    onEnd(span: ReadableSpan): void {
        span.attributes["custom-attribute"] = "custom-value";
    }
    shutdown(): Promise<void> {
        return Promise.resolve();
    }
}

const options = {
    azureMonitorExporterOptions: {
        connectionString: "YOUR_CONNECTION_STRING"
    },
    spanProcessors: [new SpanEnrichingProcessor()],
};
useAzureMonitor(options);