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.
Az OpenTelemetry JavaScript-alkalmazásprogramozási felületének (API) és szoftverfejlesztői készletének (SDK) előfeltételeinek ismerete.
- Olvassa el az OpenTelemetry JavaScript dokumentációját.
- Tekintse át az Azure Monitor OpenTelemetria konfigurálását.
- Az OpenTelemetria hozzáadásának, módosításának és szűrésének kiértékelése.
Távolítsa el a
applicationinsights
függőséget a projektből.npm uninstall applicationinsights
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.
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);