Application Insights pro Javu 2.x

Upozornění

Tento článek se týká Java 2.x služby Application Insights, která se už nedoporučuje.

Dokumentaci k nejnovější verzi najdete na stránce Application Insights Java 3.x.

V tomto článku se dozvíte, jak používat Application Insights Java 2.x. V tomto článku se dozvíte, jak:

  • Začněte a naučte se instrumentovat požadavky, sledovat závislosti, shromažďovat čítače výkonu, diagnostikovat problémy s výkonem a výjimky a psát kód pro sledování toho, co uživatelé dělají s vaší aplikací.
  • Odešlete protokoly trasování do Application Insights a prozkoumejte je pomocí portálu Application Insights.
  • Monitorujte závislosti, zachycené výjimky a doby provádění metod ve webových aplikacích Java.
  • Filtrování telemetrie ve webové aplikaci v Javě
  • Prozkoumejte metriky výkonu systému Linux ve službě Application Insights pomocí collectd.
  • Měření metrik pro kód aplikace založené na prostředí Java Virtual Machine (JVM). Exportujte data do oblíbených monitorovacích systémů pomocí monitorování aplikací Micrometer.

Poznámka

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem dat instrumentačního klíče bude dál fungovat, ale už nebudeme pro tuto funkci poskytovat aktualizace ani podporu. Přejděte na připojovací řetězce , abyste mohli využívat nové možnosti.

Začínáme s Application Insights ve webovém projektu Java

V této části použijete sadu Application Insights SDK k instrumentaci požadavků, sledování závislostí, shromažďování čítačů výkonu, diagnostice problémů s výkonem a výjimek a psaní kódu pro sledování toho, co uživatelé s vaší aplikací dělají.

Application Insights představují rozšiřitelnou analytickou službu, která webovým vývojářům pomůže pochopit výkon a využití živých aplikací. Application Insights podporuje aplikace v Javě spuštěné v systému Linux, Unix nebo Windows.

Požadavky

Budete potřebovat:

  • Účet Azure s aktivním předplatným. Účet si můžete vytvořit zdarma.
  • Funkční aplikace v Javě.

Získejte klíč instrumentace Application Insights

  1. Přihlaste se k webu Azure Portal.

  2. Na webu Azure Portalvytvořte prostředek Application Insights. Nastavte typ aplikace na webovou aplikaci Java.

  3. Najděte klíč instrumentace nového prostředku. Tento klíč budete muset za chvíli vložit do projektu kódu.

    Snímek obrazovky s podoknem Přehled pro prostředek Application Insights v Azure Portal se zvýrazněným instrumentačním klíčem

Do projektu přidejte Application Insights SDK pro jazyk Java

Zvolte typ projektu.

Pokud je váš projekt už nastavený tak, aby k sestavení používal Maven, sloučit následující kód do pom.xml souboru. Pak obnovte závislosti projektu k získání stažených binárních souborů.

    <dependencies>
      <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-web-auto</artifactId>
        <!-- or applicationinsights-web for manual web filter registration -->
        <!-- or applicationinsights-core for bare API -->
        <version>2.6.4</version>
      </dependency>
    </dependencies>

Nejčastější dotazy

  • Jaký je vztah mezi komponentami -web-auto, -weba -core ?

    • applicationinsights-web-auto poskytuje metriky, které sledují počty požadavků servletu HTTP a doby odezvy tím, že automaticky zaregistruje filtr servletu Application Insights za běhu.
    • applicationinsights-web poskytuje také metriky, které sledují počty požadavků servletu HTTP a doby odezvy. Ve vaší aplikaci se ale vyžaduje ruční registrace filtru servletu Application Insights.
    • applicationinsights-core poskytuje holé rozhraní API, například pokud vaše aplikace není založená na servletu.
  • Jak mám aktualizovat sadu SDK na nejnovější verzi?

    • Od listopadu 2020 doporučujeme k monitorování aplikací v Javě používat Application Insights Java 3.x. Další informace o tom, jak začít, najdete v tématu Application Insights Java 3.x.

Přidejte soubor ApplicationInsights.xml

Přidejte ApplicationInsights.xml do složky resources v projektu nebo se ujistěte, že je přidaná do cesty ke třídě nasazení projektu. Zkopírujte do něj následující kód XML.

Nahraďte instrumentační klíč klíčem, který jste získali z Azure Portal.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">

   <!-- The key from the portal: -->
   <InstrumentationKey>** Your instrumentation key **</InstrumentationKey>

   <!-- HTTP request component (not required for bare API) -->
   <TelemetryModules>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
   </TelemetryModules>

   <!-- Events correlation (not required for bare API) -->
   <!-- These initializers add context data to each event -->
   <TelemetryInitializers>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
   </TelemetryInitializers>

</ApplicationInsights>

Volitelně může být konfigurační soubor na libovolném místě přístupném pro vaši aplikaci. Systémová vlastnost -Dapplicationinsights.configurationDirectory určuje adresář, který obsahuje ApplicationInsights.xml. Například konfigurační soubor umístěný v E:\myconfigs\appinsights\ApplicationInsights.xml by byl nakonfigurován s vlastností -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights".

  • Klíč instrumentace se zasílá společně s každou položkou telemetrie a říká službě Application Insights, aby ho zobrazila v prostředku.
  • Požadavek komponenty HTTP je volitelný. Automaticky odesílá telemetrii týkající se žádostí a časů odezvy na portál.
  • Korelace událostí je doplněk komponenty požadavku HTTP. Přiřadí identifikátor každému požadavku přijatému serverem. Potom přidá tento identifikátor jako vlastnost do každé položky telemetrie jako vlastnost Operation.Id. Umožňuje korelovat telemetrii přidruženou k jednotlivým požadavkem nastavením filtru v diagnostickém vyhledávání.

Alternativní způsoby nastavení klíče instrumentace

Application Insights SDK hledá klíče v tomto pořadí:

  • Systémová vlastnost: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
  • Proměnná prostředí: APPINSIGHTS_INSTRUMENTATIONKEY
  • Konfigurační soubor: ApplicationInsights.xml

Můžete ho taky nastavit v kódu:

    String instrumentationKey = "00000000-0000-0000-0000-000000000000";

    if (instrumentationKey != null)
    {
        TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
    }

Přidání agenta

Nainstalujte agenta Java pro zachycení odchozích volání HTTP, dotazů JDBC, protokolování aplikací a lepšího pojmenování operací.

Spusťte aplikaci

Buď ho spusťte v režimu ladění na vývojovém počítači, nebo ho publikujte na serveru.

Zobrazte telemetrii ve službě Application Insights

Vraťte se k prostředku Application Insights v Azure Portal.

Data požadavků HTTP se zobrazí v podokně přehledu. Pokud tam není, počkejte několik sekund a pak vyberte Aktualizovat.

Snímek obrazovky s přehledem ukázkových dat

Přečtěte si další informace o metrikách.

Proklikejte se prostřednictvím jakékoli grafu pro zobrazení podrobnějších agregovaných metrik.

Snímek obrazovky znázorňující podokno selhání Application Insights s grafy

Data instance

Proklikejte se jednotlivými typy konkrétního požadavku pro zobrazení jednotlivých instancí.

Snímek obrazovky znázorňující přechod k podrobnostem v konkrétním ukázkovém zobrazení

Log Analytics: Výkonný dotazovací jazyk

Při shromažďování dalších dat můžete spouštět dotazy, které agregují data a vyhledá jednotlivé instance. Log Analytics je výkonný nástroj pro pochopení výkonu a využití a pro diagnostické účely.

Snímek obrazovky znázorňující příklad Log Analytics v Azure Portal

Nainstalujte aplikaci na server

Teď publikujte aplikaci na server, nechte ostatní, aby ji používali, a sledujte, jak se telemetrická data zobrazují na portálu.

  • Ujistěte se, že brána firewall umožňuje vaší aplikace odesílat telemetrii na tyto porty:

    • dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443
  • Pokud se odchozí provoz musí směrovat přes bránu firewall, definujte systémové vlastnosti http.proxyHost a http.proxyPort.

  • Na serverech Windows nainstalujte:

Azure App Service, Azure Kubernetes Service, konfigurace virtuálních počítačů

Nejlepším a nejsnadnějším způsobem monitorování aplikací běžících na jakémkoli poskytovateli prostředků Azure je použít Application Insights Java 3.x.

Výjimky a chyby požadavků

Neošetřené výjimky a selhání požadavků jsou automaticky shromažďovány webovým filtrem Application Insights.

Pokud chcete shromažďovat data o jiných výjimkách, můžete do kódu vložit volání trackException().

Volání metody monitorování a externí závislosti

Nainstalujte agenta Java pro protokolování interních metod a volání prováděných prostřednictvím JDBC, s daty časování a pro automatické pojmenování operací.

Distribuované trasování W3C

Sada Application Insights Java SDK teď podporuje distribuované trasování W3C.

Konfigurace příchozí sady SDK je podrobněji vysvětlená v tématu Korelace telemetrie ve službě Application Insights.

Konfigurace odchozí sady SDK je definovaná v souboruAI-Agent.xml .

Čítače výkonu

Výběrem možnosti Prozkoumat>metriky zobrazíte řadu čítačů výkonu.

Snímek obrazovky s podoknem Metriky pro prostředek Application Insights v Azure Portal s vybranými privátními bajty procesu

Vlastní nastavení kolekce čítačů výkonu

Pokud chcete zakázat shromažďování standardní sady čítačů výkonu, přidejte do kořenového uzlu souboruApplicationInsights.xml následující kód:

    <PerformanceCounters>
       <UseBuiltIn>False</UseBuiltIn>
    </PerformanceCounters>

Shromáždění dalších čítačů výkonu

Můžete zadat další čítače výkonu, které se mají shromažďovat.

Čítače JMX (vystavené virtuálním počítačem Java)
    <PerformanceCounters>
      <Jmx>
        <Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
        <Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
      </Jmx>
    </PerformanceCounters>
  • displayName: Název zobrazený na portálu Application Insights.
  • objectName: Název objektu JMX.
  • attribute: Atribut názvu objektu JMX, který se má načíst.
  • type (volitelné): Typ atributu objektu JMX:
    • Výchozí: Jednoduchý typ, například int nebo long.
    • composite: Data čítače výkonu jsou ve formátu Attribute.Data.
    • tabular: Data čítače výkonu jsou ve formátu řádku tabulky.
Čítače výkonu Windows

Každý čítač výkonu systému Windows je členem určité kategorie (stejným způsobem, jakým je pole členem třídy). Kategorie můžou být globální nebo mají číslované nebo pojmenované instance.

    <PerformanceCounters>
      <Windows>
        <Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
        <Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
      </Windows>
    </PerformanceCounters>
  • displayName: Název zobrazený na portálu Application Insights.
  • categoryName: Kategorie čítače výkonu (objekt výkonu), ke které je tento čítač výkonu přidružený.
  • counterName: Název čítače výkonu.
  • instanceName: Název instance kategorie čítače výkonu nebo prázdného řetězce (""), pokud kategorie obsahuje jednu instanci. Pokud categoryName je Process a čítač výkonu, který chcete shromáždit, pochází z aktuálního procesu JVM, na kterém je aplikace spuštěná, zadejte "__SELF__".

Čítače výkonu Unix

Nainstalujte shromážděné pomocí modulu plug-in Application Insights , abyste získali širokou škálu systémových a síťových dat.

Získejte data uživatele a relace

Teď odesíláte telemetrii z webového serveru. Pokud chcete získat úplné 360stupňové zobrazení aplikace, můžete přidat další monitorování:

Odeslat vlastní telemetrii

Teď, když jste nainstalovali sadu SDK, můžete pomocí rozhraní API odesílat vlastní telemetrii:

Testy dostupnosti webu

Application Insights může otestovat váš web v pravidelných intervalech a zkontrolovat, zda je funkční a dobře reaguje.

Přečtěte si další informace o tom, jak nastavit webové testy dostupnosti.

Řešení potíží

Projděte si vyhrazený článek o řešení potíží.

Testování připojení mezi hostitelem aplikace a službou příjmu dat

Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovaly jako volání REST do našich koncových bodů příjmu dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby příjmu dat můžete otestovat pomocí nezpracovaných klientů REST z PowerShellu nebo příkazů curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.

Prozkoumání protokolů trasování Javy v Application Insights

Pokud k trasování používáte logback nebo Log4J (v1.2 nebo v2.0), můžete protokoly trasování automaticky odesílat do Application Insights, kde je můžete prozkoumat a hledat.

Tip

Instrumentační klíč Application Insights musíte pro svou aplikaci nastavit jenom jednou. Pokud používáte architekturu, jako je Java Spring, možná jste klíč zaregistrovali jinde v konfiguraci vaší aplikace.

Použití agenta Application Insights v Javě

Ve výchozím nastavení agent Java Application Insights automaticky zaznamenává protokolování prováděné na WARN úrovni a výše.

Prahovou hodnotu protokolování, která je zaznamenána, můžete změnit pomocí souboruAI-Agent.xml :

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging threshold="info"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Záznam protokolování agenta Java můžete zakázat pomocí souboruAI-Agent.xml :

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging enabled="false"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Alternativy

Místo použití agenta Java můžete postupovat podle těchto pokynů.

Instalace sady Java SDK

Pokud jste to ještě neudělali, postupujte podle pokynů k instalaci sady Application Insights SDK pro Javu.

Přidání knihoven protokolování do projektu

Zvolte vhodný způsob pro váš projekt.

Maven

Pokud už je váš projekt nastavený tak, aby pro sestavení používal Maven, sloučí se do pom.xml souboru jeden z následujících fragmentů kódu. Pak obnovte závislosti projektu k získání stažených binárních souborů.

Logback


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-logback</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>

Log4J v2.0


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-log4j2</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>

Log4J v1.2


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-log4j1_2</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>
Gradle

Pokud už je váš projekt nastavený tak, aby pro sestavení používal Gradle, přidejte do dependencies skupiny v souboru build.gradle jeden z následujících řádků. Pak obnovte závislosti projektu k získání stažených binárních souborů.

Logback


    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'

Log4J v2.0

    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'

Log4J v1.2

    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'

Pokud chcete ručně nainstalovat sadu Application Insights Java SDK a stáhnout soubor JAR, postupujte podle pokynů. Na stránce Maven Central (Maven Central) vyberte jar odkaz v oddílu pro stažení příslušného doplňku. Přidejte stažený soubor JAR appenderu do projektu.

Logger Stáhnout Knihovna
Logback Jar doplňovače logbacku applicationinsights-logging-logback
Log4J v2.0 Log4J v2 appender Jar applicationinsights-logging-log4j2
Log4j v1.2 Log4J v1.2 appender Jar applicationinsights-logging-log4j1_2

Přidání appenderu do architektury protokolování

Pokud chcete začít získávat trasování, sloučíte příslušný fragment kódu do konfiguračního souboru logback nebo Log4J.

Logback


    <appender name="aiAppender" 
      class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
        <instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
    </appender>
    <root level="trace">
      <appender-ref ref="aiAppender" />
    </root>

Log4J v2.0


    <Configuration packages="com.microsoft.applicationinsights.log4j.v2">
      <Appenders>
        <ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
      </Appenders>
      <Loggers>
        <Root level="trace">
          <AppenderRef ref="aiAppender"/>
        </Root>
      </Loggers>
    </Configuration>

Log4J v1.2


    <appender name="aiAppender" 
         class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
        <param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
    </appender>
    <root>
      <priority value ="trace" />
      <appender-ref ref="aiAppender" />
    </root>

Na doplňovače Application Insights může odkazovat libovolný nakonfigurovaný protokolovací nástroj, a ne nutně kořenový protokolovací nástroj, jak je znázorněno v předchozích ukázkách kódu.

Prozkoumání trasování na portálu Application Insights

Teď, když jste projekt nakonfigurovali tak, aby odesílal trasování do Application Insights, můžete tato trasování zobrazit a hledat na portálu Application Insights v podokně Hledání .

Výjimky odeslané prostřednictvím protokolovačů se na portálu zobrazí jako telemetrie výjimek .

Snímek obrazovky znázorňující podokno Hledat pro prostředek Application Insights v Azure Portal

Monitorování závislostí, zachycených výjimek a časů provádění metod ve webových aplikacích Java

Pokud jste svou webovou aplikaci v Javě instrumentovali pomocí sady Application Insights SDK, můžete pomocí agenta Javy získat podrobnější přehledy bez jakýchkoli změn kódu:

  • Závislosti: Data o voláních, která vaše aplikace provádí do jiných komponent, včetně:

    • Odchozí volání HTTP: Zaznamenají se volání přes Apache HttpClient, OkHttpa java.net.HttpURLConnection .
    • Volání Redis: Zachytávají se volání přes klienta Jedis.
    • Dotazy JDBC: V případě MySQL a PostgreSQL, pokud volání trvá déle než 10 sekund, agent nahlásí plán dotazu.
  • Protokolování aplikací: Zachyťte a korelujte aplikační protokoly s požadavky HTTP a další telemetrií:

    • Log4j 1.2
    • Log4j2
    • Logback
  • Lepší pojmenování operací: Používá se k agregaci požadavků na portálu.

    • Spring: Na základě @RequestMapping.
    • JAX-RS: Založeno na @Path.

Pokud chcete použít agenta Java, nainstalujete ho na server. Vaše webové aplikace musí být instrumentované pomocí sady Application Insights Java SDK.

Instalace agenta Application Insights pro Javu

  1. Na počítači se serverem Java si stáhněte agenta 2.x. Ujistěte se, že verze agenta Java 2.x, kterou používáte, odpovídá verzi sady Application Insights Java SDK 2.x, kterou používáte.

  2. Upravte spouštěcí skript aplikačního serveru a přidejte následující argument JVM:

    -javaagent:<full path to the agent JAR file>

    Například v Tomcat na počítači s Linuxem:

    export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"

  3. Restartujte aplikační server.

Konfigurace agenta

Vytvořte soubor s názvem AI-Agent.xml a umístěte ho do stejné složky jako soubor JAR agenta.

Nastavte obsah souboru XML. Upravte následující příklad tak, aby zahrnoval nebo vynechal požadované funkce.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn enabled="true">

         <!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
         <Logging enabled="true" />

         <!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
              and java.net.HttpURLConnection, default is true -->
         <HTTP enabled="true" />

         <!-- capture JDBC queries, default is true -->
         <JDBC enabled="true" />

         <!-- capture Redis calls, default is true -->
         <Jedis enabled="true" />

         <!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
              default is 10000 milliseconds -->
         <MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>

      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Další konfigurace (Spring Boot)

java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar

Pro Azure App Service postupujte takto:

  1. Vyberte Nastavení>Nastavení aplikace.

  2. V části Nastavení aplikace přidejte nový pár hodnot klíče:

    • Klíč: JAVA_OPTS
    • Hodnota: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar

    Agent musí být zabalený jako zdroj v projektu, aby skončil v adresáři D:/home/site/wwwroot/ . Pokud chcete ověřit, že je váš agent ve správném App Service adresáři, přejděte do částiKonzola laděníPokročilých nástrojů>Pro vývoj> a zkontrolujte obsah adresáře lokality.

  3. Uložte nastavení a restartujte aplikaci. Tento postup platí jenom pro aplikační služby spuštěné ve Windows.

Poznámka

AI-Agent.xml a soubor JAR agenta by měly být ve stejné složce. Často jsou společně umístěné ve složce /resources projektu.

Povolení distribuovaného trasování W3C

Do AI-Agent.xmlpřidejte následující fragment kódu:

<Instrumentation>
   <BuiltIn enabled="true">
      <HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
   </BuiltIn>
</Instrumentation>

Poznámka

Režim zpětné kompatibility je ve výchozím nastavení povolený. Parametr enableW3CBackCompat je volitelný a měl by se použít jenom v případě, že ho chcete vypnout.

V ideálním případě by to bylo v případě, že všechny služby byly aktualizovány na novější verze sad SDK podporující protokol W3C. Doporučujeme, abyste co nejdříve přešli na novější verze sad SDK s podporou W3C.

Ujistěte se, že konfigurace příchozích i odchozích (agentů) je naprosto stejná.

Zobrazení dat

V prostředku Application Insights se pod dlaždicí Výkon zobrazí agregované vzdálené závislosti a časy provádění metod.

Pokud chcete vyhledat jednotlivé instance sestav závislostí, výjimek a metod, otevřete hledání.

Přečtěte si další informace o tom, jak diagnostikovat problémy se závislostmi.

Máte nějaké dotazy nebo problémy?

Použijte následující zdroje informací:

Filtrování telemetrie ve webové aplikaci v Javě

Filtry poskytují způsob, jak vybrat telemetrii, kterou webová aplikace v Javě odesílá do Application Insights. Existují některé předefinované filtry, které můžete použít. Můžete také psát vlastní filtry.

Mezi předefinované filtry patří:

  • Úroveň závažnosti trasování.
  • Konkrétní adresy URL, klíčová slova nebo kódy odpovědí
  • Rychlé odpovědi. Jinými slovy požadavky, na které vaše aplikace rychle reagovala.
  • Konkrétní názvy událostí.

Poznámka

Filtry zkosí metriky vaší aplikace. Můžete se například rozhodnout, že k diagnostice pomalých odpovědí nastavíte filtr, který zahodí rychlé doby odezvy. Musíte si ale uvědomit, že průměrná doba odezvy hlášená službou Application Insights pak bude pomalejší než skutečná rychlost. Počet požadavků bude také menší než skutečný počet.

Pokud se jedná o problém, použijte místo toho vzorkování .

Nastavení filtrů

V ApplicationInsights.xmlpřidejte oddíl podobný tomuto příkladu TelemetryProcessors :


    <ApplicationInsights>
      <TelemetryProcessors>

        <BuiltInProcessors>
           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>

           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="100"/>
                  <Add name="NotNeededResponseCodes" value="200-400"/>
           </Processor>

           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="100"/>
                  <Add name="NotNeededNames" value="home,index"/>
                  <Add name="NotNeededUrls" value=".jpg,.css"/>
           </Processor>

           <Processor type="TelemetryEventFilter">
                  <!-- Names of events we don't want to see -->
                  <Add name="NotNeededNames" value="Start,Stop,Pause"/>
           </Processor>

           <!-- Exclude telemetry from availability tests and bots -->
           <Processor type="SyntheticSourceFilter">
                <!-- Optional: specify which synthetic sources,
                     comma-separated
                     - default is all synthetics -->
                <Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
           </Processor>

        </BuiltInProcessors>

        <CustomProcessors>
          <Processor type="com.fabrikam.MyFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>

      </TelemetryProcessors>
    </ApplicationInsights>

Zkontrolujte úplnou sadu integrovaných procesorů.

Předdefinované filtry

Tato část popisuje předdefinované filtry, které jsou k dispozici.

Filtr telemetrie metrik


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: Seznam názvů vlastních metrik oddělených čárkami

Filtr telemetrie zobrazení stránky


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: Doba trvání odkazuje na čas potřebný k načtení stránky. Pokud je tento parametr nastavený, stránky, které se načítaly rychleji než tentokrát, se neohlásí.
  • NotNeededNames: Seznam názvů stránek oddělených čárkami.
  • NotNeededUrls: Seznam fragmentů adres URL oddělených čárkami. Například vyfiltruje všechny stránky, "home" které mají v adrese URL "home".

Filtr telemetrie požadavků


           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="500"/>
                  <Add name="NotNeededResponseCodes" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>

Filtr syntetického zdroje

Vyfiltruje veškerou telemetrii, která má ve SyntheticSource vlastnosti hodnoty. Součástí jsou požadavky robotů, pavouků a testů dostupnosti.

Vyfiltruje telemetrii pro všechny syntetické požadavky:


           <Processor type="SyntheticSourceFilter" />

Filtruje telemetrii pro konkrétní syntetické zdroje:


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: Seznam názvů syntetických zdrojů oddělených čárkami

Filtr událostí telemetrie

Filtruje vlastní události, které byly protokolovány pomocí TrackEvent():


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: Seznam názvů událostí oddělených čárkami

Filtr trasování telemetrie

Filtruje trasování protokolů protokolovaných pomocí TrackTrace() nebo kolektoru architektury protokolování:


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • Platné FromSeverityLevel hodnoty jsou:

    • VYPNUTO: Vyfiltruje všechna trasování.
    • TRACE: Bez filtrování. Rovná se úrovni TRACE.
    • INFORMACE: Vyfiltruje úroveň TRACE.
    • UPOZORNĚNÍ: Vyfiltruje trasování a INFORMACE.
    • CHYBA: Vyfiltruje upozornění, INFORMACE a TRASOVÁNÍ.
    • KRITICKÉ: Vyfiltruje vše kromě KRITICKÉ.

Vlastní filtry

Následující části ukazují postup vytvoření vlastních filtrů.

Kód filtru

V kódu vytvořte třídu, která implementuje TelemetryProcessor:


    package com.fabrikam.MyFilter;
    import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
    import com.microsoft.applicationinsights.telemetry.Telemetry;

    public class SuccessFilter implements TelemetryProcessor {

        /* Any parameters that are required to support the filter.*/
        private final String successful;

        /* Initializers for the parameters, named "setParameterName" */
        public void setNotNeeded(String successful)
        {
            this.successful = successful;
        }

        /* This method is called for each item of telemetry to be sent.
           Return false to discard it.
           Return true to allow other processors to inspect it. */
        @Override
        public boolean process(Telemetry telemetry) {
            if (telemetry == null) { return true; }
            if (telemetry instanceof RequestTelemetry)
            {
                RequestTelemetry requestTelemetry = (RequestTelemetry)    telemetry;
                return request.getSuccess() == successful;
            }
            return true;
        }
    }

Vyvolání filtru v konfiguračním souboru

Teď v ApplicationInsights.xml:



    <ApplicationInsights>
      <TelemetryProcessors>
        <CustomProcessors>
          <Processor type="com.fabrikam.SuccessFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>
      </TelemetryProcessors>
    </ApplicationInsights>

Vyvolání filtru (Java Spring)

Pro aplikace založené na architektuře Spring musí být vlastní procesory telemetrie zaregistrované ve vaší hlavní třídě aplikace jako bean. Při spuštění aplikace se pak automaticky připojí.

@Bean
public TelemetryProcessor successFilter() {
      return new SuccessFilter();
}

V nástroji vytvoříte vlastní parametry application.propertiesfiltru. Pak pomocí externalizované konfigurační architektury Spring Boot předáte tyto parametry do vlastního filtru.

Řešení potíží

V této části najdete tip pro řešení potíží.

Filtr nefunguje

Zkontrolujte, že jste zadali platné hodnoty parametrů. Například doby trvání by měly být celá čísla. Neplatné hodnoty způsobí ignorování filtru. Pokud vlastní filtr vyvolá výjimku z konstruktoru nebo metody set, bude ignorován.

collectd: Metriky výkonu Linuxu v Application Insights (zastaralé)

Pokud chcete prozkoumat metriky výkonu systému Linux ve služběApplication Insights, nainstalujte ji společně s modulem plug-in Application Insights. Toto opensourcové řešení shromažďuje různé systémové a síťové statistiky.

Obvykle se používá collectd , pokud jste už instrumentovali webovou službu Java pomocí Application Insights. Poskytuje více dat, která vám pomůžou zvýšit výkon aplikace nebo diagnostikovat problémy.

Získání instrumentačního klíče

V Azure Portal otevřete prostředek Application Insights, ve kterém se mají data zobrazit. Nebo můžete vytvořit nový prostředek.

Pořiďte si kopii instrumentačního klíče, který identifikuje prostředek.

Snímek obrazovky znázorňující podokno přehledu prostředku Application Insights v Azure Portal se zvýrazněným instrumentačním klíčem

Instalace sesbíraného modulu a modulu plug-in

Na počítačích se serverem s Linuxem:

  1. Nainstalujte si shromážděné verze 5.4.0 nebo novější.
  2. Stáhněte si modul plug-in Pro zápis shromážděných v Application Insights. Poznamenejte si číslo verze.
  3. Zkopírujte soubor JAR modulu plug-in do /usr/share/collectd/javasouboru .
  4. Upravit /etc/collectd/collectd.conf:
    • Ujistěte se, že je modul plug-in Java povolený.

    • Aktualizujte soubor JVMArg pro soubor tak, java.class.path aby obsahoval následující soubor JAR. Aktualizujte číslo verze tak, aby odpovídalo stažené verzi:

      • /usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
    • Přidejte tento fragment kódu pomocí instrumentačního klíče z vašeho prostředku:

      
           LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter"
           <Plugin ApplicationInsightsWriter>
              InstrumentationKey "Your key"
           </Plugin>
      

      Tady je část ukázkového konfiguračního souboru:

      
          ...
          # collectd plugins
          LoadPlugin cpu
          LoadPlugin disk
          LoadPlugin load
          ...
      
          # Enable Java Plugin
          LoadPlugin "java"
      
          # Configure Java Plugin
          <Plugin "java">
            JVMArg "-verbose:jni"
            JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar"
      
            # Enabling Application Insights plugin
            LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter"
      
            # Configuring Application Insights plugin
            <Plugin ApplicationInsightsWriter>
              InstrumentationKey "12345678-1234-1234-1234-123456781234"
            </Plugin>
      
            # Other plugin configurations ...
            ...
          </Plugin>
          ...
      

Nakonfigurujte další shromážděné moduly plug-in, které můžou shromažďovat různá data z různých zdrojů.

Restartujte collectd ho podle návodu.

Zobrazení dat v Application Insights

V prostředku Application Insights otevřete Metriky a přidejte grafy. V kategorii Vlastní vyberte metriky, které chcete zobrazit.

Ve výchozím nastavení se metriky agregují napříč všemi hostitelskými počítači, ze kterých se metriky shromáždily. Pokud chcete zobrazit metriky na hostitele, zapněte v podokně Podrobnosti grafuseskupování a pak zvolte seskupení podle CollectD-Host.

Vyloučení nahrávání konkrétních statistik

Modul plug-in Application Insights ve výchozím nastavení odesílá všechna data shromážděná všemi povolenými collectd read moduly plug-in.

Vyloučení dat z konkrétních modulů plug-in nebo zdrojů dat:

  • Upravte konfigurační soubor.

  • V <Plugin ApplicationInsightsWriter>nástroji přidejte řádky direktiv, jako jsou řádky v následující tabulce:

    Směrnice Účinek
    Exclude disk Vylučte všechna data shromážděná modulem disk plug-in.
    Exclude disk:read,write Vylučte zdroje s názvem read a write z disk modulu plug-in.

Direktivy oddělte novým řádekem.

Problémy?

Tato část nabízí tipy pro řešení potíží.

Na portálu se nezobrazují data

Vyzkoušejte tyto možnosti:

  • Otevřete Hledání a zjistěte, jestli dorazily nezpracované události. Někdy jejich zobrazení v Průzkumníku metrik trvá déle.
  • Možná budete muset nastavit výjimky brány firewall pro odchozí data.
  • Povolte trasování v modulu plug-in Application Insights. Přidejte tento řádek do :<Plugin ApplicationInsightsWriter>
    • SDKLogger true
  • Otevřete terminál a spusťte collectd ve podrobném režimu, abyste viděli všechny problémy, které hlásí:
    • sudo collectd -f

Známý problém

Modul plug-in pro zápis Application Insights není kompatibilní s určitými moduly plug-in pro čtení. Některé moduly plug-in někdy odesílají NaN, ale modul plug-in Application Insights očekává číslo s plovoucí desetinou čárkou.

  • Příznak: Protokol collectd zobrazuje chyby, které zahrnují "AI: ... SyntaxError: Neočekávaný token N."
  • Alternativní řešení: Vylučte data shromážděná moduly plug-in pro zápis problémů.

Monitorování aplikací v mikrometrech měří metriky pro kód aplikace založené na JVM a umožňuje exportovat data do vašich oblíbených monitorovacích systémů. V této části se dozvíte, jak používat Micrometer s Application Insights pro aplikace Spring Boot i jiné aplikace než Spring Boot.

Použití Spring Boot 1.5x

Do souboru pom.xml nebo build.gradle přidejte následující závislosti:

Postupujte takto:

  1. Aktualizujte souborpom.xml aplikace Spring Boot a přidejte do něj následující závislosti:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-spring-boot-starter</artifactId>
        <version>2.5.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-spring-legacy</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-azure-monitor</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    
  2. Aktualizujte soubor application.properties nebo YML instrumentačním klíčem Application Insights pomocí následující vlastnosti:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Sestavte aplikaci a spusťte ji.

Předchozí kroky by vás měly zprovoznění s předem agregovanými metrikami automaticky shromáhat do služby Azure Monitor.

Použití Spring 2.x

Do souboru pom.xml nebo build.gradle přidejte následující závislosti:

Postupujte takto:

  1. Aktualizujte souborpom.xml aplikace Spring Boot a přidejte do něj následující závislost:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Aktualizujte soubor application.properties nebo YML instrumentačním klíčem Application Insights pomocí následující vlastnosti:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Sestavte aplikaci a spusťte ji.

Předchozí kroky by vás měly zprovoznění s předem agregovanými metrikami automaticky shromažďovat ve službě Azure Monitor. Další informace o tom, jak vyladit úvodní sadu Spring Boot pro Application Insights, najdete v souboru readme na GitHubu.

Výchozí metriky:

  • Automaticky nakonfigurované metriky pro Tomcat, JVM, Logback, Log4J, Metriky doby provozu, Metriky procesoru a FileDescriptorMetrics
  • Pokud se například v cestě ke třídě nachází Netflix Hystrix, získáme i tyto metriky.
  • Přidáním příslušných fazolí můžete získat následující metriky:
    • CacheMetrics (CaffeineCache, EhCache2, GuavaCache, HazelcastCachea JCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • Metriky OkHttp3
    • Metriky Kafka

Vypnutí automatického shromažďování metrik:

  • Metriky JVM:
    • management.metrics.binders.jvm.enabled=false
  • Metriky logback:
    • management.metrics.binders.logback.enabled=false
  • Metriky provozuschopnosti:
    • management.metrics.binders.uptime.enabled=false
  • Metriky procesoru:
    • management.metrics.binders.processor.enabled=false
  • FileDescriptorMetrics:
    • management.metrics.binders.files.enabled=false
  • Hystrix Metrics if library on classpath:
    • management.metrics.binders.hystrix.enabled=false
  • Metriky AspectJ, pokud knihovna pro classpath:
    • spring.aop.enabled=false

Poznámka

Zadejte předchozí vlastnosti v souboru application.properties nebo application.yml aplikace Spring Boot.

Použití mikrometru s webovými aplikacemi, které nejsou Spring Boot

Do souboru pom.xml nebo build.gradle přidejte následující závislosti:

Postupujte takto:

  1. Do souboru pom.xml nebo build.gradle přidejte následující závislosti:

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-azure-monitor</artifactId>
            <version>1.1.0</version>
        </dependency>
    
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-web-auto</artifactId>
            <version>2.5.0</version>
        </dependency>
    
  2. Pokud jste to ještě neudělali, přidejte souborApplicationInsights.xml do složky resources. Další informace najdete v tématu Přidání souboru ApplicationInsights.xml.

  3. Ukázková třída Servletu (generuje metriku časovače):

        @WebServlet("/hello")
        public class TimedDemo extends HttpServlet {
    
          private static final long serialVersionUID = -4751096228274971485L;
    
          @Override
          @Timed(value = "hello.world")
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
    
            response.getWriter().println("Hello World!");
            MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry");
    
        //create new Timer metric
            Timer sampleTimer = registry.timer("timer");
            Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1);
            infiniteStream.limit(10).forEach(integer -> {
              try {
                Thread.sleep(1000);
                sampleTimer.record(integer, TimeUnit.MILLISECONDS);
              } catch (Exception e) {}
               });
          }
          @Override
          public void init() throws ServletException {
            System.out.println("Servlet " + this.getServletName() + " has started");
          }
          @Override
          public void destroy() {
            System.out.println("Servlet " + this.getServletName() + " has stopped");
          }
    
        }
    
    
  4. Ukázková třída konfigurace:

         @WebListener
         public class MeterRegistryConfiguration implements ServletContextListener {
    
           @Override
           public void contextInitialized(ServletContextEvent servletContextEvent) {
    
         // Create AzureMonitorMeterRegistry
           private final AzureMonitorConfig config = new AzureMonitorConfig() {
             @Override
             public String get(String key) {
                 return null;
             }
            @Override
               public Duration step() {
                 return Duration.ofSeconds(60);}
    
             @Override
             public boolean enabled() {
                 return false;
             }
         };
    
      MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config);
    
             //set the config to be used elsewhere
             servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry);
    
           }
    
           @Override
           public void contextDestroyed(ServletContextEvent servletContextEvent) {
    
           }
         }
    

Další informace o metrikách najdete v dokumentaci k mikrometrům.

Další vzorový kód pro vytváření různých typů metrik najdete v oficiálním úložišti Micrometer Na GitHubu.

Vytvoření vazby na další kolekci metrik

Následující části ukazují, jak shromáždit další metriky.

SpringBoot/Spring

Vytvořte bean příslušné kategorie metriky. Řekněme například, že potřebujete metriky mezipaměti Guava:

    @Bean
    GuavaCacheMetrics guavaCacheMetrics() {
        Return new GuavaCacheMetrics();
    }

Některé metriky nejsou ve výchozím nastavení povolené, ale můžou být vázány předchozím způsobem. Úplný seznam najdete v úložišti Mikrometr na GitHubu.

Jiné aplikace než Spring

Do konfiguračního souboru přidejte následující kód vazby:

    New GuavaCacheMetrics().bind(registry);

Další kroky