Udostępnij za pośrednictwem


Migrowanie z zestawu NODE.JS Application Insights SDK 2.X do usługi Azure Monitor OpenTelemetry

Ten przewodnik zawiera dwie opcje uaktualniania z usługi Azure Monitor Application Insights Node.js SDK 2.X do biblioteki OpenTelemetry.

  • Czysta instalacja dystrybucji Node.js Azure Monitor OpenTelemetry.
    • Usuń zależności od klasycznego interfejsu API usługi Application Insights.
    • Zapoznaj się z interfejsami API i terminami OpenTelemetry.
    • Ustaw się tak, aby móc korzystać ze wszystkich możliwości, które oferuje OpenTelemetry teraz i w przyszłości.
  • Uaktualnij zestaw SDK Node.js do wersji 3.X.
    • Odrocz zmiany kodu, zachowując zgodność z istniejącymi niestandardowymi zdarzeniami i metrykami.
    • Uzyskaj dostęp do bogatszych bibliotek instrumentacji OpenTelemetry.
    • Zachowaj uprawnienia do najnowszych poprawek usterek i zabezpieczeń.
  1. Uzyskaj wymaganą wiedzę na temat interfejsu API i zestawu SDK (Software Development Kit) OpenTelemetry JavaScript.

  2. Odinstaluj zależność applicationinsights z projektu.

    npm uninstall applicationinsights
    
  3. Usuń implementację zestawu SDK 2.X z kodu.

    Usuń wszystkie instrumentacje usługi Application Insights z kodu. Usuń wszystkie sekcje, w których klient usługi Application Insights jest inicjowany, modyfikowany lub wywoływany.

  4. Włącz usługę Application Insights za pomocą dystrybucji OpenTelemetry usługi Azure Monitor.

    Ważne

    Przed zaimportowanie czegokolwiek innego useAzureMonitor należy wywołać. Może wystąpić utrata danych telemetrycznych, jeśli inne biblioteki zostaną zaimportowane jako pierwsze. Aby rozpocząć korzystanie z dystrybucji OpenTelemetry usługi Azure Monitor, postępuj zgodnie z wprowadzeniem.

Zmiany i ograniczenia dystrybucji OpenTelemetry usługi Azure Monitor

  • Interfejsy API z zestawu APPLICATION Insights SDK 2.X nie są dostępne w dystrybucji OpenTelemetry usługi Azure Monitor. Dostęp do tych interfejsów API można uzyskać za pośrednictwem niełamającej się ścieżki uaktualnienia w zestawie SDK usługi Application Insights 3.X.
  • Filtrowanie zależności, dzienników i wyjątków według nazwy operacji nie jest jeszcze obsługiwane.

Zmiany i ograniczenia

Następujące zmiany i ograniczenia dotyczą obu ścieżek uaktualniania.

Obsługa wersji Node.js

Aby wersja Node.js była obsługiwana przez zestaw SDK applicationInsights 3.X, musi mieć nakładające się wsparcie zarówno z zestawu Azure SDK, jak i biblioteki OpenTelemetry. Sprawdź obsługiwane wersje środowisk uruchomieniowych OpenTelemetry, aby uzyskać najnowsze aktualizacje. Użytkownicy starszych wersji, takich jak Node 8, wcześniej obsługiwani przez zestaw SDK ApplicationInsights, nadal mogą używać rozwiązań OpenTelemetry, ale mogą wystąpić nieoczekiwane lub przerywane zachowanie. Zestaw SDK usługi ApplicationInsights zależy również od zestawu Azure SDK dla JS, który nie gwarantuje obsługi żadnych wersji Node.js, które osiągnęły koniec wsparcia technicznego. Zobacz zasady pomocy technicznej zestawu Azure SDK dla języka JS. Aby wersja Node.js była obsługiwana przez zestaw SDK applicationInsights 3.X, musi mieć nakładające się wsparcie zarówno z zestawu Azure SDK, jak i biblioteki OpenTelemetry.

Opcje konfiguracji

Zestaw SDK usługi Application Insights w wersji 2.X oferuje opcje konfiguracji, które nie są dostępne w dystrybucji OpenTelemetry Azure Monitor ani w ważnej aktualizacji wersji do zestawu SDK usługi Application Insights w wersji 3.X. Aby znaleźć te zmiany, wraz z opcjami, które nadal obsługujemy, zobacz dokumentację konfiguracji zestawu SDK.

Metryki rozszerzone

Metryki rozszerzone są obsługiwane w zestawie SDK usługi Application Insights 2.X; jednak obsługa tych metryk kończy się zarówno w wersji 3.X zestawu SDK usługi ApplicationInsights, jak i dystrybucji OpenTelemetry usługi Azure Monitor.

Procesory telemetrii

Proposed Improvements: Chociaż dystrybucja OpenTelemetry usługi Azure Monitor i zestaw SDK usługi Application Insights 3.X nie obsługują procesorów telemetrii, umożliwiają one przekazywanie procesorów span i logów. Aby uzyskać więcej informacji na temat szczegółów, zobacz Projekt dystrybucji OpenTelemetry Azure Monitor.

W tym przykładzie pokazano odpowiednik tworzenia i stosowania procesora telemetrii, który dołącza właściwość niestandardową w zestawie SDK usługi Application Insights 2.X.

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;
}

W tym przykładzie pokazano, jak zmodyfikować implementację dystrybucji Azure Monitor OpenTelemetry, aby przekazać SpanProcessor do konfiguracji dystrybucji.

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);