Aktivera Azure Monitor OpenTelemetry för .NET-, Node.js-, Python- och Java-program
Den här artikeln beskriver hur du aktiverar och konfigurerar OpenTelemetry-baserad datainsamling för att driva funktionerna i Azure Monitor Application Insights. Vi går igenom hur du installerar Azure Monitor OpenTelemetry Distro. Azure Monitor OpenTelemetry Distro tillhandahåller en OpenTelemetry-distribution som innehåller stöd för funktioner som är specifika för Azure Monitor. Distributionen möjliggör automatisk telemetri genom att inkludera OpenTelemetry-instrumentationsbibliotek för insamling av spårningar, mått, loggar och undantag, och tillåter insamling av anpassad telemetri. Du kan också använda funktionen Live Metrics som ingår i distributionen för att övervaka och samla in mer telemetri från webbprogram i produktion i realtid. Mer information om fördelarna med att använda Azure Monitor OpenTelemetry Distro finns i Varför ska jag använda "Azure Monitor OpenTelemetry Distro"?
Mer information om hur du samlar in data med OpenTelemetry finns i Vanliga frågor och svar om datainsamling eller OpenTelemetry.
OpenTelemetry- versionsstatus
OpenTelemetry-erbjudanden är tillgängliga för .NET-, Node.js-, Python- och Java-program.
Kommentar
- En funktionsspecifik versionsstatus finns i Vanliga frågor och svar.
- Den andra fliken i den här artikeln beskriver alla .NET-scenarier, inklusive klassiska ASP.NET, konsolappar, Windows Forms (WinForms) osv.
Kom igång
Följ stegen i det här avsnittet för att instrumentera ditt program med OpenTelemetry.
Förutsättningar
- En Azure-prenumeration: Skapa en Azure-prenumeration kostnadsfritt
- En Application Insights-resurs: Skapa en Application Insights-resurs
- ASP.NET Core Application med en officiellt stödd version av .NET
Dricks
Om du migrerar från det klassiska API:et för Application Insights kan du läsa vår migreringsdokumentation.
Installera klientbiblioteket
Installera det senaste Azure.Monitor.OpenTelemetry.AspNetCore
NuGet-paketet:
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
Aktivera Azure Monitor Application Insights
Om du vill aktivera Azure Monitor Application Insights gör du en mindre ändring i ditt program och ställer in anslutningssträngen. Anslutningssträngen talar om för ditt program var du ska skicka telemetrin som distributionen samlar in, och den är unik för dig.
Ändra ditt program
Lägg till UseAzureMonitor()
i programstarten, som finns i din program.cs
klass.
// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;
// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);
// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();
// Build the application.
var app = builder.Build();
// Run the application.
app.Run();
Kopiera anslutningssträngen från application insights-resursen
Dricks
Om du inte redan har en är det dags att skapa en Application Insights-resurs. Här rekommenderar vi att du skapar en ny Application Insights-resurs jämfört med en befintlig resurs.
Så här kopierar du din unika anslutningssträng:
- Gå till fönstret Översikt för din Application Insights-resurs.
- Hitta anslutningssträngen.
- Hovra över niska veze och välj ikonen Kopiera till Urklipp.
Klistra in anslutningssträngen i din miljö
Om du vill klistra in anslutningssträngen väljer du bland följande alternativ:
A. Ange via miljövariabel (rekommenderas)
Ersätt <Your Connection String>
i följande kommando med din unika niska veze.
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
B. Ange via konfigurationsfil – Endast Java (rekommenderas)
Skapa en konfigurationsfil med namnet applicationinsights.json
och placera den i samma katalog som applicationinsights-agent-3.5.4.jar
med följande innehåll:
{
"connectionString": "<Your Connection String>"
}
Ersätt <Your Connection String>
i föregående JSON med din unika niska veze.
C. Ange via Kod – ASP.NET Core, Node.js och Endast Python (rekommenderas inte)
Se Konfiguration av anslutningssträng för ett exempel på hur du ställer in Anslutningssträng via kod.
Kommentar
Om du anger niska veze på fler än en plats följer vi följande prioritet:
- Kod
- Miljövariabel
- Konfigurationsfil
Bekräfta att data flödar
Kör ditt program och öppna fliken Application Insights-resurs i Azure-portalen. Det kan ta några minuter innan data visas i portalen.
Application Insights är nu aktiverat för ditt program. Alla följande steg är valfria och möjliggör ytterligare anpassning.
Viktigt!
Om du har två eller flera tjänster som genererar telemetri till samma Application Insights-resurs måste du ange molnrollnamn för att representera dem korrekt på programkartan.
Som en del av användningen av Application Insights-instrumentation samlar vi in och skickar diagnostikdata till Microsoft. Dessa data hjälper oss att köra och förbättra Application Insights. Mer information finns i Statsbeat i Azure Application Insights.
Exempel
Azure Monitor OpenTelemetry-exempelprogram är tillgängliga för alla språk som stöds.
Nästa steg
- Mer information om hur du lägger till och ändrar Azure Monitor OpenTelemetry finns i Lägga till och ändra Azure Monitor OpenTelemetry.
- Mer information om hur du konfigurerar OpenTelemetry-distributionen finns i Konfiguration av Azure Monitor OpenTelemetry.
- Information om hur du granskar källkoden finns i Azure Monitor AspNetCore GitHub-lagringsplatsen.
- Om du vill installera NuGet-paketet söker du efter uppdateringar eller visar viktig information på sidan Azure Monitor AspNetCore NuGet-paket .
- Mer information om Azure Monitor och OpenTelemetry finns i Exempelprogrammet för Azure Monitor.
- Mer information om OpenTelemetry och dess community finns i GitHub-lagringsplatsen OpenTelemetry .NET.
- Aktivera webb- eller webbläsaranvändarövervakning för att aktivera användningsupplevelser.
Vanliga frågor och svar
Det här avsnittet innehåller svar på vanliga frågor.
Vad är OpenTelemetry?
Det är en ny standard med öppen källkod för observerbarhet. Läs mer på OpenTelemetry.
Varför investerar Microsoft Azure Monitor i OpenTelemetry?
Microsoft investerar i OpenTelemetry av följande skäl:
- Den är leverantörsneutral och tillhandahåller konsekventa API:er/SDK:er mellan olika språk.
- Med tiden tror vi att OpenTelemetry gör det möjligt för Azure Monitor-kunder att observera program som skrivits på språk utöver våra språk som stöds.
- Den utökar de typer av data som du kan samla in via en omfattande uppsättning instrumentationsbibliotek.
- OpenTelemetry Software Development Kits (SDK:er) tenderar att vara mer högpresterande i stor skala än sina föregångare, Application Insights SDK:er.
- OpenTelemetry överensstämmer med Microsofts strategi att använda öppen källkod.
Vad är statusen för OpenTelemetry?
Vad är "Azure Monitor OpenTelemetry Distro"?
Du kan se det som en tunn omslutning som buntar ihop alla OpenTelemetry-komponenter för en förstklassig upplevelse i Azure. Den här omslutningen kallas även för en distribution i OpenTelemetry.
Varför ska jag använda "Azure Monitor OpenTelemetry Distro"?
Det finns flera fördelar med att använda Azure Monitor OpenTelemetry Distro över inbyggd OpenTelemetry från communityn:
- Minskar aktiveringsarbetet
- Stöds av Microsoft
- Innehåller Azure-specifika funktioner som:
- Sampling som är kompatibel med klassiska Application Insights-SDK:er
- Microsoft Entra-autentisering
- Offlinelagring och automatiska återförsök
- Statistikbeat
- Application Insights Standard-mått
- Identifiera resursmetadata för att automatiskt fylla i molnrollnamn och molnrollinstans i olika Azure-miljöer
- Live Metrics
I OpenTelemetrys anda utformade vi distributionen så att den var öppen och utökningsbar. Du kan till exempel lägga till:
- En OpenTelemetry Protocol-exportör (OTLP) och skicka till ett andra mål samtidigt
- Andra instrumentationsbibliotek som inte ingår i distributionen
Eftersom Distro tillhandahåller en OpenTelemetry-distribution stöder distributionen allt som stöds av OpenTelemetry. Du kan till exempel lägga till fler telemetriprocessorer, exportörer eller instrumentationsbibliotek om OpenTelemetry stöder dem.
Kommentar
Distributionen anger sampler till en anpassad, fast frekvensexempel för Application Insights. Du kan ändra detta till en annan provtagare, men om du gör det kan du inaktivera några av distributionsfunktionerna. Mer information om exempelprogrammet som stöds finns i avsnittet Aktivera sampling i Konfigurera Azure Monitor OpenTelemetry.
För språk utan en fristående OpenTelemetry-exportör som stöds är Azure Monitor OpenTelemetry Distro det enda sättet att använda OpenTelemetry med Azure Monitor. För språk med en fristående OpenTelemetry-exportör som stöds kan du använda antingen Azure Monitor OpenTelemetry Distro eller lämplig fristående OpenTelemetry-exportör beroende på ditt telemetriscenario. Mer information finns i När ska jag använda Azure Monitor OpenTelemetry-exportören?.
Hur kan jag testa Azure Monitor OpenTelemetry Distro?
Kolla in våra aktiveringsdokument för .NET, Java, JavaScript (Node.js) och Python.
Ska jag använda OpenTelemetry eller Application Insights SDK?
Vi rekommenderar att du använder OpenTelemetry Distro om du inte behöver en funktion som endast är tillgänglig med formell support i Application Insights SDK.
Att använda OpenTelemetry förhindrar nu att du behöver migrera vid ett senare tillfälle.
När ska jag använda Azure Monitor OpenTelemetry-exportören?
För ASP.NET Core, Java, Node.js och Python rekommenderar vi att du använder Azure Monitor OpenTelemetry Distro. Det är en kodrad för att komma igång.
För alla andra .NET-scenarier, inklusive klassiska ASP.NET, konsolappar, Windows Forms (WinForms) osv. rekommenderar vi att du använder .NET Azure Monitor OpenTelemetry-exportören: Azure.Monitor.OpenTelemetry.Exporter
.
För mer komplexa Python-telemetriscenarier som kräver avancerad konfiguration rekommenderar vi att du använder Python Azure Monitor OpenTelemetry Exporter.
Vad är det aktuella versionstillståndet för funktioner i Azure Monitor OpenTelemetry Distro?
Följande diagram delar upp funktionsstöd för OpenTelemetry för varje språk.
Funktion | .NET | Node.js | Python | Java |
---|---|---|---|---|
Distribuerad spårning | ✅ | ✅ | ✅ | ✅ |
Anpassade mått | ✅ | ✅ | ✅ | ✅ |
Standardmått | ✅ | ✅ | ✅ | ✅ |
Sampling med fast frekvens | ✅ | ✅ | ✅ | ✅ |
Offlinelagring och automatiska återförsök | ✅ | ✅ | ✅ | ✅ |
Undantagsrapportering | ✅ | ✅ | ✅ | ✅ |
Loggsamling | ✅ | ⚠️ | ✅ | ✅ |
Anpassade händelser | ⚠️ | ⚠️ | ⚠️ | ✅ |
Microsoft Entra-autentisering | ✅ | ✅ | ✅ | ✅ |
Live-mått | ✅ | ✅ | ✅ | ✅ |
Filtrering av livemått | ✅ | ❌ | ❌ | ❌ |
Identifiera resurskontext för virtuell dator/VMSS och App Service | ✅ | ❌ | ✅ | ✅ |
Identifiera resurskontext för Azure Kubernetes Service (AKS) och Functions | ❌ | ❌ | ❌ | ✅ |
Händelser för tillgänglighetstestning som genereras med hjälp av API:et Spåra tillgänglighet | ❌ | ❌ | ❌ | ✅ |
Filtrera begäranden, beroenden, loggar och undantag efter anonymt användar-ID och syntetisk källa | ❌ | ❌ | ❌ | ✅ |
Filtrera beroenden, loggar och undantag efter åtgärdsnamn | ❌ | ❌ | ❌ | ✅ |
Adaptiv sampling | ❌ | ❌ | ❌ | ✅ |
Profilerare | ❌ | ❌ | ❌ | ⚠️ |
Felsökning av ögonblicksbild | ❌ | ❌ | ❌ | ❌ |
Tangent
- ✅ Den här funktionen är tillgänglig för alla kunder med formell support.
- ⚠️ Den här funktionen är tillgänglig som en offentlig förhandsversion. Se Kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
- ❌ Den här funktionen är inte tillgänglig eller är inte tillämplig.
Kan OpenTelemetry användas för webbläsare?
Ja, men vi rekommenderar det inte och Azure stöder det inte. OpenTelemetry JavaScript är mycket optimerat för Node.js. I stället rekommenderar vi att du använder Application Insights JavaScript SDK.
När kan vi förvänta oss att OpenTelemetry SDK ska vara tillgängligt för användning i webbläsare?
OpenTelemetry-webb-SDK:t har ingen fastställd tillgänglighetstidslinje. Vi är förmodligen flera år från en webbläsar-SDK som är ett genomförbart alternativ till Application Insights JavaScript SDK.
Kan jag testa OpenTelemetry i en webbläsare idag?
OpenTelemetry-webbsandlådan är en förgrening som utformats för att få OpenTelemetry att fungera i en webbläsare. Det går ännu inte att skicka telemetri till Application Insights. SDK:t definierar inte allmänna klienthändelser.
Stöds application insights tillsammans med konkurrerande agenter som AppDynamics, DataDog och NewRelic?
Den här metoden är inte något som vi planerar att testa eller stödja, även om våra distributioner gör att du kan exportera till en OTLP-slutpunkt tillsammans med Azure Monitor samtidigt.
Kan jag använda förhandsversionsfunktioner i produktionsmiljöer?
Vi rekommenderar det inte. Se Kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
Vad är skillnaden mellan manuell och automatisk instrumentering?
Se Översikt över OpenTelemetry.
Kan jag använda OpenTelemetry Collector?
Vissa kunder använder OpenTelemetry Collector som ett agentalternativ, även om Microsoft inte officiellt stöder en agentbaserad metod för programövervakning ännu. Under tiden bidrog communityn med öppen källkod med en OpenTelemetry Collector Azure Monitor-exportör som vissa kunder använder för att skicka data till Azure Monitor Application Insights. Detta stöds inte av Microsoft.
Vad är skillnaden mellan OpenCensus och OpenTelemetry?
OpenCensus är föregångaren till OpenTelemetry. Microsoft hjälpte till att samla OpenTracing och OpenCensus för att skapa OpenTelemetry, en enda observerbarhetsstandard för världen. Den aktuella produktionsrekommenderade Python SDK :t för Azure Monitor baseras på OpenCensus. Microsoft har åtagit sig att göra Azure Monitor baserat på OpenTelemetry.
Varför ser Status: 500. Can't visualize trace events using the trace visualizer
jag i Grafana?
Du kan försöka visualisera råa textloggar i stället för OpenTelemetry-spårningar.
I Application Insights lagrar tabellen Spårningar råtextloggar för diagnostiska ändamål. De hjälper dig att identifiera och korrelera spårningar som är associerade med användarbegäranden, andra händelser och undantagsrapporter. Tabellen Spårningar bidrar dock inte direkt till transaktionsvyn från slutpunkt till slutpunkt (vattenfallsdiagram) i visualiseringsverktyg som Grafana.
I och med det växande införandet av molnbaserade metoder finns det en utveckling inom insamling och terminologi för telemetri. OpenTelemetry blev en standard för insamling och instrumentering av telemetridata. I det här sammanhanget fick termen "Traces" en ny betydelse. I stället för råloggar refererar "Traces" i OpenTelemetry till en mer omfattande, strukturerad form av telemetri som innehåller intervall, som representerar enskilda arbetsenheter. Dessa intervall är avgörande för att skapa detaljerade transaktionsvyer, vilket möjliggör bättre övervakning och diagnostik av molnbaserade program.
Felsökning
Steg 1: Aktivera diagnostikloggning
Azure Monitor-exportören använder EventSource för sin interna loggning. Exporteringsloggarna är tillgängliga för alla EventListener genom att välja den källa som heter OpenTelemetry-AzureMonitor-Exporter
. Felsökningssteg finns i Felsökning av OpenTelemetry på GitHub.
Steg 2: Testa anslutningen mellan programvärden och inmatningstjänsten
Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop vid våra inmatningsslutpunkter. Om du vill testa anslutningen från webbservern eller programvärddatorn till slutpunkterna för inmatningstjänsten använder du cURL-kommandon eller råa REST-begäranden från PowerShell. Mer information finns i Felsöka programtelemetri som saknas i Azure Monitor Application Insights.
Kända problem
Följande objekt är kända problem för Azure Monitor OpenTelemetry-exportörerna:
Åtgärdsnamnet saknas i beroendetelemetri. Namnet på den saknade åtgärden orsakar fel och påverkar prestandafliken negativt.
Enhetsmodellen saknas i telemetri för begäran och beroende. Den saknade enhetsmodellen påverkar enhetskohortanalysen negativt.
Support
Välj en flik för det språk du väljer för att identifiera supportalternativ.
- Öppna ett Azure-supportärende för Azure-supportproblem.
- För OpenTelemetry-problem kontaktar du OpenTelemetry .NET-communityn direkt.
- En lista över öppna problem som rör Azure Monitor Exporter finns på sidan GitHub-problem.
Feedback om OpenTelemetry
Så här ger du feedback:
- Fyll i OpenTelemetry Communitys kundfeedbackundersökning.
- Berätta för Microsoft om dig själv genom att gå med i OpenTelemetry Early Adopter Community.
- Kontakta andra Azure Monitor-användare i Microsoft Tech Community.
- Gör en funktionsbegäran på Azure Feedback Forum.