Tento článek obsahuje nápovědu, podporu a možnosti zpětné vazby pro OpenTelemetry ve službě Azure Monitor Application Insights pro .NET, Javu, Node.js a aplikace v Pythonu.
Jedná se o nový opensourcový standard pro pozorovatelnost. Další informace najdete v OpenTelemetry.
Proč Microsoft Azure Monitor investuje do OpenTelemetry?
Microsoft investuje do OpenTelemetry z následujících důvodů:
Je neutrální od dodavatele a poskytuje konzistentní rozhraní API a sady SDK napříč jazyky.
V průběhu času věříme, že OpenTelemetry umožní zákazníkům služby Azure Monitor sledovat aplikace napsané v jazycích nad rámec našich podporovaných jazyků.
Rozšiřuje typy dat, která můžete shromažďovat prostřednictvím bohaté sady knihoven instrumentace.
Sady OpenTelemetry Software Development Kit (SDK) mají tendenci být výkonnější ve velkém měřítku než jejich předchůdci, sady SDK Application Insights.
Co je distribuce OpenTelemetry služby Azure Monitor?
Můžete si ho představit jako tenký obal, který spojuje všechny komponenty OpenTelemetry pro prvotřídní prostředí v Azure. Tento obálka se také nazývá distribuce v OpenTelemetry.
Proč mám používat distrou OpenTelemetry služby Azure Monitor?
Použití opentelemetry Azure Monitoru přes nativní OpenTelemetry od komunity má několik výhod:
Snižuje úsilí o povolení
Podporováno Microsoftem
Přináší funkce specifické pro Azure, například:
Vzorkování kompatibilní s klasickými sadami Application Insights SDK
V duchu OpenTelemetry jsme navrhli distribuci tak, aby byla otevřená a rozšiřitelná. Můžete například přidat:
Vývozce protokolu OTLP (OpenTelemetry Protocol) a odeslání do druhého místa určení současně
Jiné knihovny instrumentace, které nejsou součástí distribuce
Vzhledem k tomu, že distro poskytuje distribuci OpenTelemetry, distro podporuje cokoli, co podporuje OpenTelemetry. Pokud je OpenTelemetry podporuje, můžete například přidat další procesory telemetrie, exportéry nebo knihovny instrumentace.
Poznámka:
Distribuce nastaví sampler na vlastní vzorkovník s pevnou rychlostí pro Application Insights. Můžete to změnit na jiný sampler, ale můžete to udělat tak, že zakážete některé zahrnuté funkce distribuce.
Další informace o podporovaném sampleru najdete v části Povolení vzorkování v části Konfigurace OpenTelemetry služby Azure Monitor.
Pro jazyky bez podporovaného samostatného exportéru OpenTelemetry je jediným aktuálně podporovaným způsobem použití OpenTelemetry se službou Azure Monitor. Pro jazyky s podporovaným samostatným exportérem OpenTelemetry máte možnost použít distro služby Azure Monitor OpenTelemetry nebo příslušný samostatný exportér OpenTelemetry v závislosti na vašem scénáři telemetrie. Další informace najdete v tématu Kdy mám použít exportér OpenTelemetry služby Azure Monitor?.
Jak můžu otestovat distribuci OpenTelemetry služby Azure Monitor?
Kdy mám použít exportér OpenTelemetry služby Azure Monitor?
Pro ASP.NET Core, Javu, Node.js a Python doporučujeme použít distro OpenTelemetry služby Azure Monitor. Začněte jedním řádkem kódu.
Pro všechny ostatní scénáře .NET, včetně klasických ASP.NET, konzolových aplikací, model Windows Forms (WinForms) atd., doporučujeme použít exportér OpenTelemetry pro .NET Azure Monitor: Azure.Monitor.OpenTelemetry.Exporter.
Pro složitější scénáře telemetrie Pythonu, které vyžadují pokročilou konfiguraci, doporučujeme použít exportér OpenTelemetry služby Python Azure Monitor.
Jaký je aktuální stav funkcí ve službě Azure Monitor OpenTelemetry Distro?
Následující graf rozebíral podporu funkcí OpenTelemetry pro každý jazyk.
Je možné OpenTelemetry použít pro webové prohlížeče?
Ano, ale nedoporučujeme ho a Azure ho nepodporuje. OpenTelemetry JavaScript je silně optimalizovaný pro Node.js. Místo toho doporučujeme použít sadu Application Insights JavaScript SDK.
Kdy můžeme očekávat, že sada OpenTelemetry SDK bude dostupná pro použití ve webových prohlížečích?
Webová sada SDK OpenTelemetry nemá určenou časovou osu dostupnosti. Pravděpodobně jsme několik let daleko od sady SDK prohlížeče, která je možná alternativou k sadě Application Insights JavaScript SDK.
Můžu dnes testovat OpenTelemetry ve webovém prohlížeči?
Webový sandbox OpenTelemetry je fork navržený tak, aby openTelemetry fungoval v prohlížeči. Zatím není možné odesílat telemetrii do Application Insights. Sada SDK nedefinuje obecné události klienta.
Podporuje se spouštění Application Insights společně s agenty konkurentů, jako jsou AppDynamics, DataDog a NewRelic?
Tento postup není něco, co plánujeme testovat nebo podporovat, i když naše distribuce umožňují exportovat do koncového bodu OTLP společně se službou Azure Monitor současně.
Můžu používat funkce preview v produkčních prostředích?
Jaký je rozdíl mezi ručním a automatickým instrumentací?
Viz přehled OpenTelemetry.
Můžu použít kolektor OpenTelemetry?
Někteří zákazníci používají OpenTelemetry Collector jako alternativu agenta, i když Microsoft oficiálně nepodporuje přístup založený na agentech pro monitorování aplikací. Do té doby opensourcová komunita přispěla exportérem Služby Azure Monitoru OpenTelemetry, který někteří zákazníci používají k odesílání dat do služby Azure Monitor Application Insights. Microsoft to nepodporuje.
Jaký je rozdíl mezi OpenCensus a OpenTelemetry?
OpenCensus je prekurzorem OpenTelemetry. Microsoft pomohl spojit OpenTracing a OpenCensus k vytvoření OpenTelemetry, jediného pozorovatelného standardu pro svět. Aktuální sada Python SDK doporučená pro produkční prostředí pro Azure Monitor je založená na OpenCensus. Společnost Microsoft se zavázala vytvářet Azure Monitor na základě OpenTelemetry.
V Grafaně, proč vidím Status: 500. Can't visualize trace events using the trace visualizer?
Místo trasování OpenTelemetry se můžete pokoušet vizualizovat nezpracované textové protokoly.
V Application Insights tabulka Traces ukládá nezpracované textové protokoly pro účely diagnostiky. Pomáhají identifikovat a korelovat trasování související s požadavky uživatelů, dalšími událostmi a sestavami výjimek. Tabulka Traces ale přímo nepřispívá do kompletního zobrazení transakcí (vodopádový graf) v nástrojích vizualizace, jako je Grafana.
S rostoucím přijetím postupů nativních pro cloud existuje vývoj shromažďování a terminologie telemetrie. OpenTelemetry se stal standardem pro shromažďování a instrumentaci telemetrických dat. V tomto kontextu pojem Traces převzal nový význam. Místo nezpracovaných protokolů označují trasování v OpenTelemetry bohatší strukturovanou formu telemetrie, která zahrnuje rozsahy, které představují jednotlivé jednotky práce. Tato rozsahy jsou zásadní pro vytváření podrobných zobrazení transakcí, což umožňuje lepší monitorování a diagnostiku aplikací nativních pro cloud.
Exportér služby Azure Monitor používá k internímu protokolování EventSource. Protokoly vývozce jsou k dispozici pro jakýkoli EventListener tím, že se přihlásí ke zdroji s názvem OpenTelemetry-AzureMonitor-Exporter. Postup řešení potíží najdete v tématu Řešení potíží s OpenTelemetry na GitHubu.
Krok 2: Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights pro vývoj softwaru (SDK) a agenti odesílají telemetrii, aby se ingestovala jako volání REST v našich koncových bodech příjmu dat. Pokud chcete otestovat připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat, použijte příkazy cURL nebo nezpracované požadavky REST z PowerShellu. Další informace najdete v tématu Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Známé problémy
V následujících položkách jsou známé problémy pro exportéry OpenTelemetry služby Azure Monitor:
V telemetrii závislostí chybí název operace. Chybějící název operace způsobuje selhání a nepříznivě ovlivňuje výkon karty.
V požadavku a telemetrii závislostí chybí model zařízení. Chybějící model zařízení nepříznivě ovlivňuje analýzu kohorty zařízení.
Krok 1: Povolení protokolování diagnostiky
Exportér služby Azure Monitor používá k internímu protokolování EventSource. Protokoly vývozce jsou k dispozici pro jakýkoli EventListener tím, že se přihlásí ke zdroji s názvem OpenTelemetry-AzureMonitor-Exporter. Postup řešení potíží najdete v tématu Řešení potíží s OpenTelemetry na GitHubu.
Krok 2: Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovala jako volání REST v koncových bodech příjmu dat. Pokud chcete otestovat připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat, použijte příkazy cURL nebo nezpracované požadavky REST z PowerShellu. Další informace najdete v tématu Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Známé problémy
V následujících položkách jsou známé problémy pro exportéry OpenTelemetry služby Azure Monitor:
V telemetrii závislostí chybí název operace. Chybějící název operace způsobuje selhání a nepříznivě ovlivňuje výkon karty.
V požadavku a telemetrii závislostí chybí model zařízení. Chybějící model zařízení nepříznivě ovlivňuje analýzu kohorty zařízení.
Krok 2: Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovala jako volání REST v koncových bodech příjmu dat. Pokud chcete otestovat připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat, použijte příkazy cURL nebo nezpracované požadavky REST z PowerShellu. Další informace najdete v tématu Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Známé problémy
Pokud si stáhnete klientskou knihovnu Application Insights pro instalaci z prohlížeče, někdy se stažený soubor JAR poškodí a je přibližně poloviční velikost zdrojového souboru. Pokud dojde k tomuto problému, stáhněte soubor JAR spuštěním příkazu curl nebo wget , jak je znázorněno v následujícím příkladu volání příkazů:
Ukázkové volání příkazů platí pro Application Insights pro Javu verze 3.4.11. Pokud chcete najít číslo verze a adresu URL aktuální verze Application Insights pro Javu, přečtěte si téma https://github.com/microsoft/ApplicationInsights-Java/releases.
Následující kroky platí pro nativní aplikace Spring Boot.
Krok 1: Ověření verze OpenTelemetry
Během spuštění aplikace si můžete všimnout následující zprávy:
WARN c.a.m.a.s.OpenTelemetryVersionCheckRunner - The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency.
The OpenTelemetry version should be <version>
V tomto případě musíte importovat faktury OpenTelemetry podle dokumentace OpenTelemetry v úvodní aplikaci Spring Boot.
Krok 2: Povolení samoobslužné diagnostiky
Pokud něco nefunguje podle očekávání, můžete povolit samoobslužnou diagnostiku na DEBUG úrovni, abyste získali nějaké přehledy. Uděláte to tak, že nastavíte úroveň samoobslužné diagnostiky na ERRORhodnotu , WARNINFO, DEBUG, nebo TRACE pomocí APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL proměnné prostředí.
Pokud chcete povolit samoobslužnou diagnostiku na DEBUG úrovni při spuštění kontejneru Dockeru, spusťte následující příkaz:
docker run -e APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL=DEBUG <image-name>
Poznámka:
Odpovídajícím způsobem nahraďte <image-name> názvem image Dockeru.
Zřeknutí se odpovědnosti za informace třetích stran
Společnost Microsoft neposkytuje žádnou záruku, předpokládanou nebo jinou záruku týkající se výkonu nebo spolehlivosti těchto nezávislých produktů třetích stran.
Krok 1: Povolení protokolování diagnostiky
Exportér služby Azure Monitor používá protokolovací nástroj rozhraní API OpenTelemetry pro interní protokoly. Pokud chcete protokolovací nástroj povolit, spusťte následující fragment kódu:
Krok 2: Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovala jako volání REST v koncových bodech příjmu dat. Pokud chcete otestovat připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat, použijte příkazy cURL nebo nezpracované požadavky REST z PowerShellu. Další informace najdete v tématu Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Známé problémy
V následujících položkách jsou známé problémy pro exportéry OpenTelemetry služby Azure Monitor:
V telemetrii závislostí chybí název operace. Chybějící název operace způsobuje selhání a nepříznivě ovlivňuje výkon karty.
V požadavku a telemetrii závislostí chybí model zařízení. Chybějící model zařízení nepříznivě ovlivňuje analýzu kohorty zařízení.
V názvu závislosti chybí název databázového serveru. Vzhledem k tomu, že název databázového serveru není zahrnutý, exportéři OpenTelemetry nesprávně agregují tabulky se stejným názvem na různé servery.
Povolit diagnostické protokolování
Exportér Microsoft Azure Monitoru používá pro své interní protokolování standardní knihovnu protokolování Pythonu. Protokoly rozhraní OpenTelemetry API a exportéru služby Azure Monitor mají přiřazenou úroveň WARNING závažnosti nebo ERROR pro nepravidelnou aktivitu. Úroveň INFO závažnosti se používá pro běžnou nebo úspěšnou aktivitu.
Ve výchozím nastavení nastaví knihovna protokolování Pythonu úroveň závažnosti na WARNING. Proto je nutné změnit úroveň závažnosti, abyste viděli protokoly v tomto nastavení závažnosti. Následující příklad kódu ukazuje, jak výstupní protokoly všech úrovní závažnosti do konzoly a souboru:
Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovala jako volání REST v koncových bodech příjmu dat. Pokud chcete otestovat připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat, použijte příkazy cURL nebo nezpracované požadavky REST z PowerShellu. Další informace najdete v tématu Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Vyhněte se duplicitní telemetrii
Duplicitní telemetrie je často způsobena vytvořením více instancí procesorů nebo exportérů. Ujistěte se, že pro každý pilíř telemetrie (protokoly, metriky a distribuované trasování) spouštíte vždy jenom jeden vývozce a procesor.
Následující části popisují scénáře, které můžou způsobit duplicitní telemetrii.
Duplicitní protokoly trasování ve službě Azure Functions
Pokud se v Application Insights zobrazí dvojice položek pro každý protokol trasování, pravděpodobně jste povolili následující typy instrumentace protokolování:
Nativní instrumentace protokolování ve službě Azure Functions
Instrumentace azure-monitor-opentelemetry protokolování v rámci distribuce
Pokud chcete zabránit duplikaci, můžete protokolování distribuce zakázat, ale v Azure Functions nechte povolenou nativní instrumentaci protokolování. Chcete-li tohoto cíle dosáhnout, nastavte proměnnou OTEL_LOGS_EXPORTER prostředí na Nonehodnotu .
Duplicitní telemetrie ve službě Azure Functions AlwaysOn
Pokud je nastavení AlwaysOn ve službě Azure Functions nastavené na Zapnuto, služba Azure Functions udržuje některé procesy spuštěné na pozadí po dokončení každého spuštění. Předpokládejme například, že máte pětiminutovou funkci časovače, která pokaždé volá configure_azure_monitor . Po 20 minutách můžete mít čtyři exportéry metrik, které běží současně. Tato situace může být zdrojem telemetrie duplicitních metrik.
V takovém případě buď nastavte nastavení AlwaysOn na Vypnuto, nebo zkuste ručně vypnout poskytovatele mezi jednotlivými configure_azure_monitor voláními. Pokud chcete vypnout každého zprostředkovatele, spusťte volání vypnutí pro každého aktuálního měřiče, trasování a zprostředkovatele protokolovacího nástroje, jak je znázorněno v následujícím kódu:
Azure Workbooks a Jupyter Notebooks můžou udržovat procesy exportéru spuštěné na pozadí. Pokud chcete zabránit duplicitní telemetrii, vymažte mezipaměť předtím, než budete volat configure_azure_monitorvíce .
Chybějící telemetrie požadavků z aplikací FastAPI nebo Flask
Pokud chybí data tabulky Requests, ale ne jiné kategorie, je pravděpodobné, že vaše architektura HTTP není instrumentována. K tomu může dojít v aplikacích FastAPI a Flask využívajících klientskou knihovnu Azure Monitor OpenTelemetry pro Python , pokud deklarace nes strukturujete import správně. Před voláním configure_azure_monitor funkce můžete importovat fastapi.FastAPI knihovny FastAPI a Flask nebo flask.Flask v uvedeném pořadí. Například následující kód úspěšně instrumentuje aplikace FastAPI a Flask:
# FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
from fastapi import FastAPI
configure_azure_monitor()
app = FastAPI()
# Flask
from azure.monitor.opentelemetry import configure_azure_monitor
from flask import Flask
configure_azure_monitor()
app = Flask(__name__)
Místo toho doporučujeme importovat moduly fastapiflask jako celek a pak volat configure_azure_monitor konfiguraci OpenTelemetry tak, aby používala Azure Monitor před přístupem nebo fastapi.FastAPIflask.Flask: