Migreren van de Node.js Application Insights SDK 2.X naar Azure Monitor OpenTelemetry
Deze handleiding biedt twee opties om een upgrade uit te voeren van de Azure Monitor Application Insights Node.js SDK 2.X naar OpenTelemetry.
- Installeer de Node.js Azure Monitor OpenTelemetry Distro.
- Verwijder afhankelijkheden van de klassieke Application Insights-API.
- Vertrouwd raken met OpenTelemetry-API's en termen.
- Positioneer uzelf om alles te gebruiken wat OpenTelemetry nu en in de toekomst biedt.
- Voer een upgrade uit naar Node.js SDK 3.X.
- Codewijzigingen uitstellen met behoud van compatibiliteit met bestaande aangepaste gebeurtenissen en metrische gegevens.
- Uitgebreidere OpenTelemetry-instrumentatiebibliotheken openen.
- Blijf in aanmerking komen voor de meest recente bug- en beveiligingsoplossingen.
Krijg vereiste kennis van de OpenTelemetry JavaScript Application Programming Interface (API) en Software Development Kit (SDK).
- Lees de Documentatie voor OpenTelemetry JavaScript.
- Controleer Azure Monitor OpenTelemetry configureren.
- OpenTelemetry toevoegen, wijzigen en filteren.
Verwijder de
applicationinsights
afhankelijkheid van uw project.npm uninstall applicationinsights
Sdk 2.X-implementatie verwijderen uit uw code.
Verwijder alle Application Insights-instrumentatie uit uw code. Verwijder secties waarin de Application Insights-client wordt geïnitialiseerd, gewijzigd of aangeroepen.
Schakel Application Insights in met de Azure Monitor OpenTelemetry Distro.
Belangrijk
Voordat u iets anders importeert,
useAzureMonitor
moet deze worden aangeroepen. Er kan telemetrieverlies optreden als andere bibliotheken eerst worden geïmporteerd. Volg de introductie van onboarding naar de Azure Monitor OpenTelemetry Distro.
Wijzigingen en beperkingen in Azure Monitor OpenTelemetry Distro
- De API's van de Application Insights SDK 2.X zijn niet beschikbaar in de Azure Monitor OpenTelemetry Distro. U kunt deze API's openen via een vast upgradepad in de Application Insights SDK 3.X.
- Het filteren van afhankelijkheden, logboeken en uitzonderingen op bewerkingsnaam wordt nog niet ondersteund.
Wijzigingen en beperkingen
De volgende wijzigingen en beperkingen zijn van toepassing op beide upgradepaden.
ondersteuning voor Node.js versie
Voor een versie van Node.js die moet worden ondersteund door de ApplicationInsights 3.X SDK, moet deze overlappende ondersteuning hebben van zowel de Azure SDK als OpenTelemetry. Controleer de ondersteunde runtimes van OpenTelemetry voor de meest recente updates. Gebruikers met oudere versies, zoals Node 8, die eerder worden ondersteund door de ApplicationInsights SDK, kunnen nog steeds OpenTelemetry-oplossingen gebruiken, maar kunnen onverwacht gedrag of gedrag veroorzaken. De ApplicationInsights SDK is ook afhankelijk van de Azure SDK voor JS die geen ondersteuning biedt voor Node.js versies die het einde van de levensduur hebben bereikt. Zie het ondersteuningsbeleid voor de Azure SDK voor JS. Voor een versie van Node.js die moet worden ondersteund door de ApplicationInsights 3.X SDK, moet deze overlappende ondersteuning hebben van zowel de Azure SDK als OpenTelemetry.
Configuratieopties
De Application Insights SDK versie 2.X biedt configuratieopties die niet beschikbaar zijn in de Azure Monitor OpenTelemetry Distro of in de primaire versie-upgrade naar Application Insights SDK 3.X. Raadpleeg de SDK-configuratiedocumentatie om deze wijzigingen te vinden, samen met de opties die we nog steeds ondersteunen.
Uitgebreide metrische gegevens
Uitgebreide metrische gegevens worden ondersteund in de Application Insights SDK 2.X; Ondersteuning voor deze metrische gegevens eindigt echter in zowel versie 3.X van de ApplicationInsights SDK als de Azure Monitor OpenTelemetry Distro.
Telemetrieverwerkers
Hoewel de Azure Monitor OpenTelemetry Distro en Application Insights SDK 3.X geen ondersteuning bieden voor TelemetryProcessors, kunt u hiermee span- en logboekrecordprocessors doorgeven. Zie het Azure Monitor OpenTelemetry Distro-project voor meer informatie.
In dit voorbeeld ziet u het equivalent van het maken en toepassen van een telemetrieprocessor die een aangepaste eigenschap koppelt aan de 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;
}
In dit voorbeeld ziet u hoe u een Azure Monitor OpenTelemetry Distro-implementatie wijzigt om een SpanProcessor door te geven aan de configuratie van de distributie.
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);