Sdílet prostřednictvím


Migrace ze sady Node.js Application Insights SDK 2.X na Azure Monitor OpenTelemetry

Tato příručka obsahuje dvě možnosti upgradu ze sady Azure Monitor Application Insights Node.js SDK 2.X na OpenTelemetry.

  • Proveďte čistou instalaci distribuce Azure Monitor OpenTelemetry pro Node.js.
    • Odeberte závislosti v klasickém rozhraní API Application Insights.
    • Seznamte se s rozhraními API a termíny OpenTelemetry.
    • Připravte se k využívání všech možností OpenTelemetry nyní i v budoucnu.
  • Upgradujte na Node.js SDK 3.X.
    • Odložte změny kódu při zachování kompatibility s existujícími vlastními událostmi a metrikami.
    • Získejte přístup k bohatším knihovnám instrumentace OpenTelemetry.
    • Zajistěte si oprávnění pro nejnovější opravy chyb a zabezpečení.

Poznámka:

Informace o aplikacích Funkcí Azure najdete v tématu Použití OpenTelemetry se službou Azure Functions.

  1. Získejte základní znalosti rozhraní API (OpenTelemetry JavaScript Application Programming Interface) a sady SDK (Software Development Kit).

  2. Odinstalujte závislost applicationinsights z vašeho projektu.

    npm uninstall applicationinsights
    
  3. Odeberte implementaci sady SDK 2.X z kódu.

    Odeberte veškerou instrumentaci Application Insights ze svého kódu. Odstraňte všechny oddíly, ve kterých je klient Application Insights inicializován, změněn nebo volán.

  4. Povolte Application Insights pomocí distribuce OpenTelemetry služby Azure Monitor.

    Důležité

    Před importem čehokoli jiného musíte useAzureMonitor zavolat. Při prvním importu jiných knihoven může dojít ke ztrátě telemetrie. Postupujte podle pokynů, jak začít, abyste se zapojili do distribuce OpenTelemetry pro Azure Monitor.

Změny a omezení distribuce OpenTelemetry služby Azure Monitor

  • Rozhraní API ze sady Application Insights SDK 2.X nejsou dostupná v distribuci OpenTelemetry pro Azure Monitor. K těmto rozhraním API můžete přistupovat prostřednictvím nepřerušující cesty upgradu v rozhraní Application Insights SDK 3.X.
  • Filtrování závislostí, protokolů a výjimek podle názvu operace se zatím nepodporuje.

Změny a omezení

Následující změny a omezení platí pro obě cesty upgradu.

podpora verzí Node.js

Aby sada ApplicationInsights 3.X SDK podporovala verzi Node.js, musí mít překrývající se podporu ze sady Azure SDK i OpenTelemetry. Nejnovější aktualizace najdete v podporovaných prostředích OpenTelemetry. Uživatelé starších verzí, jako je Node 8, které dříve podporovala sada ApplicationInsights SDK, můžou stále používat řešení OpenTelemetry, ale můžou zaznamenat neočekávané nebo zásadní chování. Sada ApplicationInsights SDK také závisí na sadě Azure SDK pro JS, která nezaručuje podporu pro žádné Node.js verze, které dosáhly konce životnosti. Prohlédněte si zásady podpory Azure SDK pro JS. Aby sada ApplicationInsights 3.X SDK podporovala verzi Node.js, musí mít překrývající se podporu ze sady Azure SDK i OpenTelemetry.

Možnosti konfigurace

Sada Application Insights SDK verze 2.X nabízí možnosti konfigurace, které nejsou dostupné v distribuci OpenTelemetry služby Azure Monitor nebo v hlavní verzi aktualizace na Application Insights SDK 3.X. Chcete-li zjistit tyto změny spolu s možnostmi, které stále podporujeme, podívejte se do dokumentace ke konfiguraci sady SDK.

Rozšířené metriky

Rozšířené metriky jsou podporovány v sadě Application Insights SDK 2.X; Podpora těchto metrik však končí ve verzi 3.X sady ApplicationInsights SDK i v distrou OpenTelemetry služby Azure Monitor.

Telemetrické procesory

I když Azure Monitor OpenTelemetry Distro a Application Insights SDK 3.X nepodporují telemetrické procesory, umožňují předávat procesory prozáznamů protokolů a pro zpracovávání událostí. Další informace o tom, jak, najdete v projektu OpenTelemetry Distro služby Azure Monitor.

Tento příklad ukazuje ekvivalent vytvoření a použití procesoru telemetrie, který připojí vlastní vlastnost v sadě Application Insights SDK 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;
}

Tento příklad ukazuje, jak upravit implementaci distribuce OpenTelemetry ve službě Azure Monitor tak, aby předala objekt SpanProcessor do konfigurace distribuce.

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