Megosztás a következőn keresztül:


Migrálás az Node.js Application Insights SDK 2.X-ből az Azure Monitor OpenTelemetrybe

Ez az útmutató két lehetőséget kínál az Azure Monitor Application Insights Node.js SDK 2.X-ről OpenTelemetryre való frissítésre.

  • Telepítse az Node.js Azure Monitor OpenTelemetry distrot.
    • Távolítsa el a klasszikus Application Insights API függőségeit.
    • Ismerkedjen meg az OpenTelemetry API-kkal és kifejezésekkel.
    • Helyezze magát arra, hogy az Összes OpenTelemetria-ajánlatot használja most és a jövőben.
  • Frissítés Node.js SDK 3.X-re.
    • A kódmódosítások elhalasztása a meglévő egyéni eseményekkel és metrikákkal való kompatibilitás megőrzése mellett.
    • Gazdagabb OpenTelemetry-eszközkódtárak elérése.
    • A legújabb hiba- és biztonsági javítások jogosultságának fenntartása.
  1. Az OpenTelemetry JavaScript-alkalmazásprogramozási felületének (API) és szoftverfejlesztői készletének (SDK) előfeltételeinek ismerete.

  2. Távolítsa el a applicationinsights függőséget a projektből.

    npm uninstall applicationinsights
    
  3. Távolítsa el az SDK 2.X-implementációt a kódból.

    Távolítsa el az összes Application Insights-rendszerállapotot a kódból. Törölje azokat a szakaszokat, ahol az Application Insights-ügyfél inicializálva, módosítva vagy meghívva van.

  4. Engedélyezze az Application Insightst az Azure Monitor OpenTelemetria-disztribúcióval.

    Fontos

    Mielőtt bármi mást importálna, useAzureMonitor meg kell hívni. Telemetriai hiba akkor fordulhat elő, ha a többi kódtárat importálja először. Kövesse az Azure Monitor OpenTelemetry-disztribúció előkészítésének első lépéseit .

Az Azure Monitor OpenTelemetry disztribúció változásai és korlátozásai

  • Az Application Insights SDK 2.X API-k nem érhetők el az Azure Monitor OpenTelemetry Distro-ban. Ezeket az API-kat az Application Insights SDK 3.X nem törhető frissítési útvonalán érheti el.
  • A függőségek, naplók és kivételek műveletnév szerinti szűrése még nem támogatott.

Változások és korlátozások

A következő módosítások és korlátozások mindkét frissítési útvonalra érvényesek.

Node.js verziótámogatás

Ahhoz, hogy az ApplicationInsights 3.X SDK támogassa a Node.js egy verzióját, átfedésben kell lennie az Azure SDK és az OpenTelemetria támogatásával. A legújabb frissítésekért tekintse meg az OpenTelemetry által támogatott futtatókörnyezeteket . A régebbi, például az ApplicationInsights SDK által korábban támogatott Node 8-mal rendelkező felhasználók továbbra is használhatnak OpenTelemetry-megoldásokat, de váratlan vagy kompatibilitástörő viselkedést tapasztalhatnak. Az ApplicationInsights SDK a JS-hez készült Azure SDK-tól is függ, amely nem garantálja az élettartam végéig elért Node.js verziók támogatását. Tekintse meg az Azure SDK for JS támogatási szabályzatát. Ahhoz, hogy az ApplicationInsights 3.X SDK támogassa a Node.js egy verzióját, átfedésben kell lennie az Azure SDK és az OpenTelemetria támogatásával.

Konfigurációs lehetőségek

Az Application Insights SDK 2.X-es verziója olyan konfigurációs lehetőségeket kínál, amelyek nem érhetők el az Azure Monitor OpenTelemetry Distro vagy az Application Insights SDK 3.X főverzió-frissítésében. A módosítások megkereséséhez és a továbbra is támogatott lehetőségekhez tekintse meg az SDK konfigurációs dokumentációját.

Kiterjesztett metrikák

A kiterjesztett metrikákat az Application Insights SDK 2.X támogatja; Ezeknek a metrikáknak a támogatása azonban az ApplicationInsights SDK 3.X-es verziójával és az Azure Monitor OpenTelemetry Distro-val végződik.

Telemetriai feldolgozók

Bár az Azure Monitor OpenTelemetry Distro és az Application Insights SDK 3.X nem támogatja a telemetriaiprocesszorokat, lehetővé teszik a span- és naplórekord-processzorok átadását. További információ a hogyanról: Azure Monitor OpenTelemetry Distro project.

Ez a példa egy olyan telemetriai processzor létrehozásának és alkalmazásának megfelelőjét mutatja be, amely egy egyéni tulajdonságot csatol az Application Insights SDK 2.X-ben.

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

Ez a példa bemutatja, hogyan módosíthatja az Azure Monitor OpenTelemetry Distro implementációját úgy, hogy egy SpanProcessort átadjon a disztribúció konfigurációjának.

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