Azure Monitor automatické instrumentaci založené na OpenTelemetry pro aplikace Java
Tento článek popisuje, jak povolit a nakonfigurovat Azure Monitor v jazyce Java založeném na OpenTelemetry. po dokončení pokynů v tomto článku budete moct použít Azure Monitor Application Insights k monitorování vaší aplikace.
Začínáme
Automatickou instrumentaci Java je možné povolit bez jakýchkoli změn kódu.
Požadavky
- Aplikace Java, která používá Java 8 +
- Předplatné Azure: Vytvořte si předplatné Azure zdarma .
- prostředek Application Insights: vytvoření prostředku Application Insights
povolit Azure Monitor Application Insights
V této části se dozvíte, jak stáhnout soubor JAR pro automatické instrumentaci.
Stáhnout soubor JAR
Stáhněte si soubor ApplicationInsights-agent-3.2.3. jar .
Upozornění
Pokud upgradujete z verze 3,0 Preview:
- Pečlivě zkontrolujte všechny Možnosti konfigurace . Struktura JSON se úplně změnila. Název souboru je nyní malými písmeny.
Pokud provádíte upgrade z verze 3.0. x:
- Názvy operací a názvy telemetrie požadavků jsou nyní předponou metodou HTTP, například
GETaPOST. Tato změna může mít vliv na vlastní řídicí panely nebo výstrahy, pokud se spoléhaly na předchozí hodnoty. Podrobnosti najdete v poznámkách k verzi 3.1.0.
Pokud upgradujete z verze 3.1. x:
- Názvy závislostí databáze jsou nyní stručnější s úplným (upraveným) dotazem, který je stále přítomen v
datapoli. Názvy závislostí HTTP jsou nyní výstižnější. Tato změna může mít vliv na vlastní řídicí panely nebo výstrahy, pokud se spoléhaly na předchozí hodnoty. Podrobnosti najdete v poznámkách k verzi 3.2.0.
Nasměrujte JVM na soubor JAR.
Přidejte -javaagent:path/to/applicationinsights-agent-3.2.3.jar do ARGUMENTŮ JVM vaší aplikace.
Tip
nápovědu ke konfiguraci argumentů JVM vaší aplikace najdete v tématu Tipy pro aktualizaci JVM argumentů.
nastavení připojovacího řetězce Application Insights
existují dva způsoby, kterými můžete soubor jar nasměrovat na váš Application Insights prostředek:
Můžete nastavit proměnnou prostředí:
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...Případně můžete vytvořit konfigurační soubor s názvem
applicationinsights.json. Umístěte ho do stejného adresáře jakoapplicationinsights-agent-3.2.3.jars následujícím obsahem:{ "connectionString": "InstrumentationKey=..." }
vyhledejte připojovací řetězec na prostředku Application Insights.
Potvrzení toku dat
spusťte aplikaci a otevřete kartu Application Insights prostředků v Azure Portal. Může trvat několik minut, než se data zobrazí na portálu.
Poznámka
Pokud nemůžete aplikaci spustit nebo pokud nezískáváte data podle očekávání, přečtěte si část věnované řešení potíží .
Důležité
pokud máte dvě nebo více služeb, které emitují telemetrii ke stejnému Application Insights prostředku, je nutné nastavit názvy rolí cloudu tak, aby se na mapě aplikace správně reprezentovaly.
v rámci používání instrumentace Application Insights shromažďujeme a odesíláme diagnostická data společnosti Microsoft. tato data nám pomáhají se spouštěním a zlepšením Application Insights. Máte možnost zakázat shromažďování nepostradatelných dat. další informace najdete v tématu Statsbeat v Azure Application Insights.
Možnosti konfigurace
V applicationinsights.json souboru můžete také nakonfigurovat tato nastavení:
- Název cloudové role
- Instance cloudové role
- Vzorkování
- JMX metriky
- Vlastní rozměry
- Procesory telemetrie (Preview)
- Protokolování s autoshromážděním
- Automatické shromáždění metrik mikroměřičů, mezi které patří metriky pružinového pohánějícího systému
- Tep
- Proxy server HTTP
- Samoobslužná Diagnostika
Další informace najdete v tématu Možnosti konfigurace.
Knihovny instrumentace
Java 3. x zahrnuje následující knihovny instrumentace.
Počet autoshromážděných požadavků
- JMS spotřebitelé
- Kafka spotřebitelé
- Síťovina/webtokem
- Servletů
- Plánování pružiny
Vyshromážděné závislosti
Další shromážděné závislosti plus šíření distribuovaného trasování pro příjem dat:
- Apache HttpClient
- Apache HttpAsyncClient
- AsyncHttpClient
- Google HttpClient
- gRPC
- Java. NET. HttpURLConnection
- Java 11 – HttpClient
- Klient JAX-RS
- Jetty HttpClient
- JMS
- Kafka
- Klient síťoviny
- OkHttp
Autoshromáždilované závislosti bez šíření podřízeného distribuovaného trasování:
- Cassandra
- JDBC
- MongoDB (asynchronní a synchronizace)
- Redis (Lettuce a Jedis)
Protokoly s autoshromážděním
- Java. util. Logging
- Log4j, která zahrnuje vlastnosti MDC
- SLF4J/Logback, včetně vlastností MDC
Vyshromážděné metriky
- Mikroměřič, který zahrnuje metriky pro pružinové spouštěcí poháněcí jednotky
- JMX metriky
Sady Azure SDK
Telemetrii vydaná pomocí těchto sad Azure SDK se ve výchozím nastavení automaticky shromáždí:
- Azure App Configuration 1.1.10+
- Azure Cognitive Search 11.3.0+
- Azure Communication Chat 1.0.0+
- Azure Communication Common 1.0.0+
- Azure Communication Identity 1.0.0+
- Azure Communication Telefon čísla 1.0.0+
- Azure Communication SMS 1.0.0+
- Azure Cosmos DB 4.13.0+
- Azure Digital Twins – Core 1.1.0+
- Azure Event Grid 4.0.0+
- Azure Event Hubs 5.6.0+
- Azure Event Hubs – Azure Blob Storage CheckPoint Store 1.5.1+
- Azure Rozpoznávání formulářů verze 3.0.6+
- Azure Identity 1.2.4+
- Azure Key Vault – Certifikáty 4.1.6+
- Azure Key Vault – klíče 4.2.6+
- Azure Key Vault – tajné kódy 4.2.6+
- Azure Service Bus verze 7.1.0 nebo více
- Azure Storage – objekty blob 12.11.0+
- Azure Storage – Blobs Batch 12.9.0+
- Azure Storage – Blobs Cryptography 12.11.0+
- Azure Storage – běžné 12.11.0+
- Azure Storage – Files Data Lake 12.5.0+
- Azure Storage – Sdílené složky 12.9.0+
- Azure Storage – Fronty 12.9.0+
- Azure Analýza textu verze 5.0.4 nebo více
Úprava telemetrie
Tato část vysvětluje, jak upravit telemetrii.
Přidání atributů span
K přidání opentelemetry-api atributů do rozsahů můžete použít . Tyto atributy mohou zahrnovat přidání vlastní obchodní dimenze do telemetrie. Atributy můžete použít také k nastavení volitelných polí ve schématu Přehledy, jako je ID uživatele nebo IP adresa klienta.
Přidání vlastní dimenze
Přidáním jedné nebo více vlastních dimenzí naplníte pole customDimensions v tabulce požadavků, závislostí nebo výjimek.
Poznámka
Tato funkce je jenom ve verzích 3.2.0 a novějších.
Přidejte
opentelemetry-api-1.6.0.jardo aplikace:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>Přidejte do kódu vlastní dimenze:
import io.opentelemetry.api.trace.Span; Span.current().setAttribute("mycustomdimension", "myvalue1");
Nastavení ID uživatele
Vyplňte pole ID uživatele v tabulce požadavků, závislostí nebo výjimek.
Důležité
Než nastavíte ověřené ID uživatele, obraťte se na příslušné zákony o ochraně osobních údajů.
Poznámka
Tato funkce je jenom ve verzích 3.2.0 a novějších.
Přidejte
opentelemetry-api-1.6.0.jardo aplikace:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>Nastavte
user_Idv kódu:import io.opentelemetry.api.trace.Span; Span.current().setAttribute("enduser.id", "myuser");
Získání ID trasování nebo ID span
K získání ID opentelemetry-api trasování nebo ID span můžete použít . Tuto akci můžete provést přidáním těchto identifikátorů do existující telemetrie protokolování za účelem zlepšení korelace při ladění a diagnostice problémů.
Poznámka
Tato funkce je jenom ve verzích 3.2.0 a novějších.
Přidejte
opentelemetry-api-1.6.0.jardo aplikace:<dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.6.0</version> </dependency>Získejte ID trasování požadavku a ID span ve vašem kódu:
import io.opentelemetry.api.trace.Span; String traceId = Span.current().getSpanContext().getTraceId(); String spanId = Span.current().getSpanContext().getSpanId();
Vlastní telemetrická data
Naším cílem ve Přehledy Java 3.x je umožnit vám odesílat vlastní telemetrii pomocí standardních rozhraní API.
V současné době podporujeme mikrometr, oblíbená protokolovací rozhraní a sadu Application Přehledy Java 2.x SDK. Application Přehledy Java 3.x automaticky zachycuje telemetrii odesílanou prostřednictvím těchto rozhraní API a koreluje ji s automaticky shromašenou telemetrií.
Podporovaná vlastní telemetrie
Následující tabulka představuje aktuálně podporované vlastní typy telemetrie, které můžete povolit pro doplnění agenta Java 3.x. Shrnutí:
- Vlastní metriky se podporují prostřednictvím mikrometru.
- Vlastní výjimky a trasování jsou podporovány prostřednictvím rozhraní protokolování.
- Vlastní požadavky, závislosti a výjimky jsou podporovány prostřednictvím
opentelemetry-api. - Jakýkoli typ vlastní telemetrie se podporuje prostřednictvím sady Application Přehledy Java 2.x SDK.
| Vlastní typ telemetrie | Mikrometr | Log4j, logback, JUL | 2.x SDK | opentelemetry-api |
|---|---|---|---|---|
| Vlastní události | Ano | |||
| Vlastní metriky | Ano | Ano | ||
| Závislosti | Ano | Ano | ||
| Výjimky | Ano | Ano | Ano | |
| Zobrazení stránek | Ano | |||
| Žádosti | Ano | Ano | ||
| Trasování | Ano | Ano |
V současné době plánujeme vydání sady SDK s application Přehledy 3.x.
Application Insights java 3. x už naslouchá telemetrie, která se posílá do Application Insights Java 2. x SDK. Tato funkce je důležitou součástí scénáře upgradu pro existující uživatele 2. x. A vyplní důležitou mezeru v naší podpoře vlastní telemetrie, dokud není všeobecně dostupné rozhraní OpenTelemetry API.
Odesílat vlastní metriky pomocí mikroměřiče
Přidat mikroměřič do aplikace:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.6.1</version> </dependency>Použití globálního registru mikroměřiče k vytvoření měřiče:
static final Counter counter = Metrics.counter("test_counter");Pro záznam metrik použijte čítač:
counter.increment();
Posílání vlastních trasování a výjimek pomocí oblíbeného protokolovacího rozhraní
Log4j, Logback a Java. util. Logging jsou automaticky instrumentované. Protokolování prováděné prostřednictvím těchto protokolovacích rozhraní je automatické shromáždění jako trasování a telemetrie výjimek.
Ve výchozím nastavení je protokolování shromažďováno pouze v případě, že je protokolování provedeno na úrovni informací nebo výše. Chcete-li změnit tuto úroveň, přečtěte si část Možnosti konfigurace.
Pokud chcete k protokolům připojovat vlastní dimenze, použijte Log4j 1,2 MDC, log4j 2 MDCnebo Logback MDC. Application Insights Java 3. x automaticky zachycuje tyto vlastnosti MDC jako vlastní rozměry na telemetrii trasování a výjimky.
Odeslání vlastní telemetrie pomocí sady 2. x SDK
Přidejte
applicationinsights-core-2.6.3.jardo aplikace. všechny 2. x verze jsou podporovány Application Insights Java 3. x. Pokud máte možnost volby. používá nejnovější verzi:<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-core</artifactId> <version>2.6.3</version> </dependency>Vytvořte TelemetryClient:
static final TelemetryClient telemetryClient = new TelemetryClient();Použití klienta k posílání vlastní telemetrie:
Události
telemetryClient.trackEvent("WinGame");Metriky
telemetryClient.trackMetric("queueLength", 42.0);Závislosti
boolean success = false; long startTime = System.currentTimeMillis(); try { success = dependency.call(); } finally { long endTime = System.currentTimeMillis(); RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(); telemetry.setSuccess(success); telemetry.setTimestamp(new Date(startTime)); telemetry.setDuration(new Duration(endTime - startTime)); telemetryClient.trackDependency(telemetry); }Protokoly
telemetryClient.trackTrace(message, SeverityLevel.Warning, properties);Výjimky
try { ... } catch (Exception e) { telemetryClient.trackException(e); }
Řešení potíží
Pomoc při řešení potíží najdete v tématu řešení potíží.
Podpora
Získání podpory:
- Pomoc při řešení potíží najdete v tématu věnovaném řešení potíží.
- V případě problémů s podporou Azure otevřete lístek podpory Azure.
- V případě problémů s OpenTelemetry se obraťte přímo na komunitu OpenTelemetry .
OpenTelemetry váš názor
Poskytnutí zpětné vazby:
- Vyplňte dotazník OpenTelemetry komunity pro zákazníky.
- Řekněte Microsoftu, že se připojíte k OpenTelemetry předčasnému schválení Community.
- Zapojte se do dalších Azure Monitor uživatelů v Microsoft Tech Community.
- Vytvořte žádost o funkci na fóru pro názory na Azure.
Další kroky
- chcete-li zkontrolovat zdrojový kód, přečtěte si téma úložiště GitHub automatické instrumentace Azure Monitor Java.
- další informace o OpenTelemetry a jeho komunitě najdete v tématu úložiště OpenTelemetry Java GitHub.
- Pokud chcete povolit prostředí používání, přečtěte si téma povolení monitorování uživatelů na webu nebo v prohlížeči.