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

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 GET a POST . 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 data poli. 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

  1. 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 jako applicationinsights-agent-3.2.3.jar s následujícím obsahem:

      {
        "connectionString": "InstrumentationKey=..."
      }
      
  2. vyhledejte připojovací řetězec na prostředku Application Insights.

    snímek obrazovky zobrazující Application Insights připojovací řetězec

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íží .

snímek obrazovky zobrazující kartu přehled Application Insights se serverovými požadavky a zvýrazněnou dobou odezvy serveru.

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í:

Ú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.

  1. Přidejte opentelemetry-api-1.6.0.jar do aplikace:

    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-api</artifactId>
      <version>1.6.0</version>
    </dependency>
    
  2. 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.

  1. Přidejte opentelemetry-api-1.6.0.jar do aplikace:

    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-api</artifactId>
      <version>1.6.0</version>
    </dependency>
    
  2. Nastavte user_Id v 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.

  1. Přidejte opentelemetry-api-1.6.0.jar do aplikace:

    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-api</artifactId>
      <version>1.6.0</version>
    </dependency>
    
  2. 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

  1. Přidat mikroměřič do aplikace:

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. Použití globálního registru mikroměřiče k vytvoření měřiče:

    static final Counter counter = Metrics.counter("test_counter");
    
  3. 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

  1. Přidejte applicationinsights-core-2.6.3.jar do 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>
    
  2. Vytvořte TelemetryClient:

    static final TelemetryClient telemetryClient = new TelemetryClient();
    
  3. 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:

OpenTelemetry váš názor

Poskytnutí zpětné vazby:

Další kroky