Application Insights For Java 2.x

Figyelemfelhívás

Ez a cikk az Application Insights Java 2.x verziójára vonatkozik, amely már nem ajánlott.

A legújabb verzió dokumentációja az Application Insights Java 3.x-ben található.

Ebből a cikkből megtudhatja, hogyan használhatja az Application Insights Java 2.x-et. Ez a cikk a következőkhöz nyújt útmutatást:

  • Első lépésként megtudhatja, hogyan alakíthatja ki a kéréseket, nyomon követheti a függőségeket, gyűjthet teljesítményszámlálókat, diagnosztizálhatja a teljesítményproblémákat és a kivételeket, és írhat kódot a felhasználók alkalmazással kapcsolatos teendőinek nyomon követéséhez.
  • Nyomkövetési naplókat küldhet az Application Insightsnak, és megismerheti őket az Application Insights portál használatával.
  • Figyelheti a függőségeket, a kifogott kivételeket és a metódus végrehajtási idejét a Java-webalkalmazásokban.
  • Telemetria szűrése a Java-webalkalmazásban.
  • Ismerkedjen meg a Linux rendszerteljesítmény-metrikáival az Application Insightsban a használatával collectd.
  • A Java virtuális gép (JVM)-alapú alkalmazáskód metrikáinak mérése. Exportálja az adatokat kedvenc monitorozási rendszereibe a Micrometer-alkalmazásfigyelés használatával.

Megjegyzés

2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapotkulcs-betöltés továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztringekre az új képességek kihasználásához.

Ismerkedés az Application Insights szolgáltatással Java webes projektben

Ebben a szakaszban az Application Insights SDK-val rendszerezheti a kéréseket, nyomon követheti a függőségeket, teljesítményszámlálókat gyűjthet, diagnosztizálhatja a teljesítményproblémákat és a kivételeket, és kódot írhat a felhasználók alkalmazással kapcsolatos teendőinek nyomon követéséhez.

Az Application Insights egy bővíthető elemzési szolgáltatás a webfejlesztők számára, amely segít megérteni az élő alkalmazása teljesítményét és használatát. Az Application Insights a Linux, Unix vagy Windows rendszeren futó Java alkalmazásokat támogatja.

Előfeltételek

A következők szükségesek:

  • Egy Azure-fiók, aktív előfizetéssel. Ingyenesen létrehozhat fiókot.
  • Egy működő Java-alkalmazás.

Application Insights-kialakítási kulcs beszerzése

  1. Jelentkezzen be az Azure Portalra.

  2. Hozzon létre egy Application Insights-erőforrást az Azure Portalon. Állítsa be a Java webalkalmazás alkalmazástípust.

  3. Keresse meg az új erőforrás kialakítási kulcsát. Ezt a kulcsot nemsokára a kódprojektbe kell illesztenie.

    Képernyőkép egy Application Insights-erőforrás Áttekintés paneljéről a Azure Portal, kiemelve a kialakítási kulcsot.

A Javához készült Application Insights SDK hozzáadása a projekthez

Válassza ki a projekt típusát.

Ha a projekt már be van állítva a Maven buildeléshez való használatára, egyesítse az alábbi kódot a pom.xml fájlba. Ezután frissítse a projektfüggőségeket, hogy letöltse a bináris fájlokat.

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

Gyakori kérdések

  • Mi a kapcsolat a , -webés -core az -web-autoösszetevők között?

    • applicationinsights-web-auto olyan metrikákat biztosít, amelyek nyomon követik a HTTP servlet-kérések számát és a válaszidőket az Application Insights servlet szűrő futásidejű automatikus regisztrálásával.
    • applicationinsights-web olyan metrikákat is biztosít, amelyek nyomon követik a HTTP servlet-kérelmek számát és a válaszidőket. Az Application Insights servlet szűrő manuális regisztrálása azonban szükséges az alkalmazásban.
    • applicationinsights-core a csupasz API-t adja meg, például ha az alkalmazás nem servlet-alapú.
  • Hogyan frissíthetek az SDK legújabb verziójára?

    • 2020 novemberétől java-alkalmazások monitorozásához az Application Insights Java 3.x használatát javasoljuk. További információ az első lépésekről: Application Insights Java 3.x.

ApplicationInsights.xml fájl hozzáadása

Adjon hozzáApplicationInsights.xml a projekt erőforrások mappájához, vagy győződjön meg arról, hogy az bekerült a projekt üzembehelyezési osztályának elérési útjába. Másolja bele a következő XML-t.

Cserélje le a kialakítási kulcsot a Azure Portal kapott kulcsra.

<?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>

A konfigurációs fájl tetszőleges, az alkalmazás számára elérhető helyen lehet. A rendszertulajdonság -Dapplicationinsights.configurationDirectory a ApplicationInsights.xmltartalmazó könyvtárat adja meg. Például egy E:\myconfigs\appinsights\ApplicationInsights.xml helyen található konfigurációs fájl a tulajdonsággal -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"lenne konfigurálva.

  • A kialakítási kulcsot a telemetria minden elemével megkapja, és ez közli az Application Insights eszközzel, hogy megjelenítse azt az erőforrásban.
  • A HTTP-kérelemösszetevő nem kötelező. Automatikusan telemetriát küld a kérelmekkel és válaszidőkkel kapcsolatban a portálra.
  • Az eseménykorreláció a HTTP-kérelemösszetevő további eleme. Azonosítót rendel a kiszolgáló által fogadott kérésekhez. Ezután tulajdonságként hozzáadja ezt az azonosítót a telemetria minden eleméhez tulajdonságként Operation.Id. Lehetővé teszi az egyes kérésekhez társított telemetriai adatok korrelálását egy szűrő beállításával a Diagnosztikai keresésben.

A kialakítási kulcs beállításának egyéb módjai

Az Application Insights SDK ebben a sorrendben keresi a kulcsot:

  • Rendszertulajdonság: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
  • Környezeti változó: APPINSIGHTS_INSTRUMENTATIONKEY
  • Konfigurációs fájl: ApplicationInsights.xml

Beállíthatja a programkódban is:

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

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

Ügynök hozzáadása

Telepítse a Java-ügynököt a kimenő HTTP-hívások, JDBC-lekérdezések, alkalmazásnaplózás és jobb műveletelnevezés rögzítéséhez.

Az alkalmazás futtatása

Futtassa hibakeresési módban a fejlesztői gépen, vagy tegye közzé a kiszolgálón.

A telemetria megtekintése az Application Insights szolgáltatásban

Térjen vissza az Application Insights-erőforráshoz a Azure Portal.

A HTTP-kérelmek adatai megjelennek az áttekintési panelen. Ha nincs ott, várjon néhány másodpercet, majd válassza a Frissítés lehetőséget.

Képernyőkép az áttekintési mintaadatokról.

További információ a metrikákról.

Részletesebb összesített mérőszámokért kattintson bármelyik diagramra.

Képernyőkép egy Application Insights-hibák panelről diagramokkal.

Példányadatok

Kattintson az adott kérelemtípusokra az egyes példányok megtekintéséhez.

Képernyőkép egy adott mintanézetbe történő részletezésről.

Log Analytics: Hatékony lekérdezési nyelv

Amikor több adatot halmoz fel, lekérdezéseket futtathat az adatok összesítéséhez és az egyes példányok megkereséséhez. A Log Analytics hatékony eszköz a teljesítmény és a használat megértéséhez, valamint diagnosztikai célokra.

Képernyőkép a Log Analyticsről a Azure Portal.

Az alkalmazás telepítése a kiszolgálón

Most tegye közzé az alkalmazást a kiszolgálón, hagyja, hogy mások használják, és figyelje meg, ahogy a telemetria megjelenik a portálon.

  • Győződjön meg arról, hogy a tűzfal lehetővé teszi, hogy az alkalmazás telemetriát küldjön ezekre a portokra:

    • dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443
  • Ha a kimenő forgalmat tűzfalon keresztül kell irányítani, adja meg a rendszer tulajdonságait http.proxyHost és http.proxyPorta .

  • Windows-kiszolgálókon telepítse a következőt:

Azure App Service, Azure Kubernetes Service, virtuális gépek konfigurációja

Az Azure-erőforrás-szolgáltatókon futó alkalmazások monitorozásának legjobb és legegyszerűbb módja az Application Insights Java 3.x használata.

Kivételek és kérelemhibák

Az Application Insights webes szűrője automatikusan gyűjti a nem kezelt kivételeket és a kéréshibákat.

Ha más kivételekről szeretne adatokat gyűjteni, beszúrhat hívásokat a trackException() kódba.

Metódushívások és külső függőségek megfigyelése

Telepítse a Java-ügynököt a JDBC-n keresztül megadott belső metódusok és hívások naplózásához, időzítési adatokkal és az automatikus műveletelnevezéshez.

W3C elosztott nyomkövetés

Az Application Insights Java SDK mostantól támogatja a W3C elosztott nyomkövetést.

A bejövő SDK-konfigurációról bővebben az Application Insights telemetriai korrelációja című témakörben talál további információt.

A kimenő SDK-konfiguráció a AI-Agent.xml fájlban van definiálva.

Teljesítményszámlálók

Válassza aMetrikákvizsgálata> lehetőséget a teljesítményszámlálók tartományának megtekintéséhez.

Képernyőkép egy Application Insights-erőforrás Metrikák paneljéről a Azure Portal a kiválasztott folyamat privát bájtjaival.

Teljesítményszámláló-gyűjtemény testreszabása

A standard teljesítményszámlálók gyűjteményének letiltásához adja hozzá a következő kódot a ApplicationInsights.xml fájl gyökércsomópontja alá:

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

További teljesítményszámlálók gyűjtése

További gyűjtendő teljesítményszámlálókat is megadhat.

JMX-számlálók (a Java virtuális gép által elérhetővé téve)
    <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: Az Application Insights portálon megjelenő név.
  • objectName: A JMX-objektum neve.
  • attribute: A beolvasandó JMX-objektumnév attribútuma.
  • type (nem kötelező): A JMX-objektum attribútumának típusa:
    • Alapértelmezett: Egyszerű típus, például int vagy long.
    • composite: A teljesítményszámláló adatai formátuma Attribute.Data.
    • tabular: A teljesítményszámláló adatai táblázatsor formátumúak.
Windows-teljesítményszámlálók

Mindegyik Windows-teljesítményszámláló egy kategória tagja (ugyanúgy, ahogyan a mezők osztályok tagjai). A kategóriák lehetnek globálisak, illetve számozott vagy elnevezett példányok is lehetnek.

    <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: Az Application Insights portálon megjelenő név.
  • categoryName: A teljesítményszámláló kategóriája (teljesítményobjektum), amelyhez ez a teljesítményszámláló társítva van.
  • counterName: A teljesítményszámláló neve.
  • instanceName: A teljesítményszámláló kategóriapéldányának neve vagy egy üres sztring (""), ha a kategória egyetlen példányt tartalmaz. Ha categoryName igen, Process és a gyűjteni kívánt teljesítményszámláló az aktuális JVM-folyamatból származik, amelyen az alkalmazás fut, adja meg a értéket "__SELF__".

Unix-teljesítményszámlálók

Az Application Insights beépülő modullal gyűjtött telepítés a rendszer- és hálózati adatok széles körének lekéréséhez.

Felhasználói és munkamenetadatok lekérése

Most telemetriát küld a webkiszolgálóról. Az alkalmazás teljes 360 fokos nézetének megtekintéséhez további monitorozást adhat hozzá:

Saját telemetria küldése

Most, hogy telepítette az SDK-t, az API-val elküldheti a saját telemetriáját:

Rendelkezésre állási webes tesztek

Az Application Insights rendszeres időközönként teszteli a webhelyét, hogy működik és jól válaszol-e.

További információ a rendelkezésre állási webes tesztek beállításáról.

Hibaelhárítás

Tekintse meg a dedikált hibaelhárítási cikket.

Az alkalmazás gazdagépe és a betöltési szolgáltatás közötti kapcsolat tesztelése

Az Application Insights SDK-k és -ügynökök telemetriát küldenek, hogy REST-hívásként töltsenek be a betöltési végpontokra. A webkiszolgálóról vagy az alkalmazásgazdagépről a betöltési szolgáltatás végpontjaihoz való kapcsolódást a PowerShellből származó nyers REST-ügyfelek vagy curl-parancsok használatával tesztelheti. Lásd: Hiányzó alkalmazástelemetria hibaelhárítása az Azure Monitor Application Insightsban.

Java-nyomkövetési naplók felfedezése az Application Insightsban

Ha Logbacket vagy Log4J-t (1.2-s vagy 2.0-s verzió) használ nyomkövetéshez, a nyomkövetési naplókat automatikusan elküldheti az Application Insightsnak, ahol megvizsgálhatja és megkeresheti őket.

Tipp

Az Application Insights rendszerállapotkulcsát csak egyszer kell beállítania az alkalmazáshoz. Ha olyan keretrendszert használ, mint a Java Spring, előfordulhat, hogy már regisztrálta a kulcsot az alkalmazás konfigurációjában máshol.

Az Application Insights Java-ügynök használata

Alapértelmezés szerint az Application Insights Java-ügynök automatikusan rögzíti a szinten és a WARN fenti szinten végrehajtott naplózást.

A rögzített naplózási küszöbértéket a AI-Agent.xml fájllal módosíthatja:

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

A Java-ügynök naplózási rögzítését a AI-Agent.xml fájl használatával tilthatja le:

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

Alternatív megoldások

A Java-ügynök használata helyett kövesse ezeket az utasításokat.

A Java SDK telepítése

Kövesse az utasításokat a Java-hoz készült Application Insights SDK telepítéséhez, ha még nem tette meg.

Naplózási kódtárak hozzáadása a projekthez

Válassza ki a projektnek megfelelő módszert.

Maven

Ha a projekt már be van állítva a Maven buildeléséhez, egyesítse az alábbi kódrészletek egyikét a pom.xml fájlba. Ezután frissítse a projektfüggőségeket, hogy letöltse a bináris fájlokat.

Visszalépés


    <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

Ha a projekt már be van állítva a Gradle buildhez való használatára, adja hozzá az alábbi sorok egyikét a csoporthoz a dependenciesbuild.gradle fájlban. Ezután frissítse a projektfüggőségeket, hogy letöltse a bináris fájlokat.

Visszalépés


    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.+'

Kövesse az irányelveket az Application Insights Java SDK manuális telepítéséhez és a jar letöltéséhez. A Maven Central lapon válassza a jar megfelelő hozzáfűző letöltési szakaszának hivatkozását. Adja hozzá a letöltött hozzáfűző jar-t a projekthez.

Tuskózó Letöltés Kódtár
Visszalépés Logback appender Jar 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

A hozzáfűző hozzáadása a naplózási keretrendszerhez

A nyomkövetések lekéréséhez egyesítse a megfelelő kódrészletet a Logback vagy a Log4J konfigurációs fájllal.

Visszalépés


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

Az Application Insights-hozzáfűzőkre bármely konfigurált naplózó hivatkozhat, és nem feltétlenül a gyökérnaplózóra, ahogy az az előző kódmintákban is látható.

A nyomkövetések megismerése az Application Insights portálon

Most, hogy konfigurálta a projektet úgy, hogy nyomkövetéseket küldjön az Application Insightsnak, megtekintheti és megkeresheti ezeket a nyomkövetéseket az Application Insights portál Keresés paneljén.

A naplózókon keresztül elküldött kivételek kivételtelemetriaként jelennek meg a portálon.

Képernyőkép az Application Insights-erőforrás keresés paneljéről a Azure Portal.

Függőségek, kifogott kivételek és metódus-végrehajtási idők monitorozása Java-webalkalmazásokban

Ha a Java-webalkalmazást az Application Insights SDK-val hozta létre, a Java-ügynökkel kódmódosítások nélkül mélyebb elemzéseket kaphat:

  • Függőségek: Az alkalmazás által más összetevőkre irányuló hívásokkal kapcsolatos adatok, beleértve a következőket:

    • Kimenő HTTP-hívások: A , OkHttpés java.net.HttpURLConnection használatával Apache HttpClientindított hívások rögzítve vannak.
    • Redis-hívások: A Jedis-ügyfélen keresztül indított hívásokat elfogják.
    • JDBC-lekérdezések: A MySQL és a PostgreSQL esetében, ha a hívás 10 másodpercnél tovább tart, az ügynök jelenti a lekérdezéstervet.
  • Alkalmazásnaplózás: Rögzítse és korrelálja az alkalmazásnaplókat HTTP-kérésekkel és egyéb telemetriával:

    • Log4j 1.2
    • Log4j2
    • Visszalépés
  • Jobb műveletelnevezés: A kérések összesítéséhez használatos a portálon.

    • Spring: Alapján @RequestMapping.
    • JAX-RS: A alapján @Path.

A Java-ügynök használatához telepítse a kiszolgálóra. A webalkalmazásokat az Application Insights Java SDK-val kell formázni.

A Javához készült Application Insights-ügynök telepítése

  1. A Java-kiszolgálót futtató gépen töltse le a 2.x ügynököt. Győződjön meg arról, hogy a használt 2.x Java-ügynök verziója megegyezik a használt 2.x Application Insights Java SDK verziójával.

  2. Szerkessze az alkalmazáskiszolgáló indítási parancsfájlját, és adja hozzá a következő JVM-argumentumot:

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

    Például a Tomcatben linuxos gépen:

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

  3. Indítsa újra az alkalmazáskiszolgálót.

Az ügynök konfigurálása

Hozzon létre egy AI-Agent.xml nevű fájlt, és helyezze ugyanabban a mappában, amelyben az ügynök jar-fájlja található.

Állítsa be az XML-fájl tartalmát. Szerkessze az alábbi példát a kívánt funkciók belefoglalásához vagy kihagyásához.

<?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>

További konfiguráció (Spring Boot)

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

A Azure App Service kövesse az alábbi lépéseket:

  1. Válassza a Beállítások>Alkalmazásbeállítások lehetőséget.

  2. Az Alkalmazásbeállítások területen adjon hozzá egy új kulcsértékpárt:

    • Kulcs: JAVA_OPTS
    • Érték: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar

    Az ügynököt erőforrásként kell csomagolni a projektben, hogy a D:/home/site/wwwroot/ könyvtárba kerüljön. Annak ellenőrzéséhez, hogy az ügynök a megfelelő App Service könyvtárban van-e, lépjen a Fejlesztői eszközökSpeciális eszközök>>hibakeresési konzol lapra, és vizsgálja meg a helykönyvtár tartalmát.

  3. Mentse a beállításokat, és indítsa újra az alkalmazást. Ezek a lépések csak a Windows rendszeren futó alkalmazásszolgáltatásokra vonatkoznak.

Megjegyzés

AI-Agent.xml és az ügynök jar-fájljának ugyanabban a mappában kell lennie. Ezek gyakran együtt vannak elhelyezve a projekt /resources mappájában.

W3C elosztott nyomkövetés engedélyezése

Adja hozzá a következő kódrészletet a AI-Agent.xml:

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

Megjegyzés

A visszamenőleges kompatibilitási mód alapértelmezés szerint engedélyezve van. A enableW3CBackCompat paraméter nem kötelező, és csak akkor használható, ha ki szeretné kapcsolni.

Ideális esetben ez a helyzet, ha az összes szolgáltatást frissítették a W3C protokollt támogató SDK-k újabb verzióira. Javasoljuk, hogy a lehető leghamarabb váltsa át a W3C-támogatással rendelkező SDK-k újabb verzióit.

Győződjön meg arról, hogy a bejövő és a kimenő (ügynök) konfigurációja is pontosan megegyezik.

Az adatok megtekintése

Az Application Insights-erőforrásban az összesített távoli függőségi és metódus-végrehajtási idők a Teljesítmény csempén jelennek meg.

A függőségi, kivétel- és metódusjelentések egyes példányainak kereséséhez nyissa meg a Keresés elemet.

További információ a függőségi problémák diagnosztizálásáról.

Kérdései vagy problémái vannak?

Használja a következő erőforrásokat:

Telemetria szűrése a Java-webalkalmazásban

A szűrőkkel kiválaszthatja a Java-webalkalmazás által az Application Insightsnak küldött telemetriát. Van néhány beépített szűrő, amelyet használhat. Saját egyéni szűrőket is írhat.

A beépített szűrők a következők:

  • Nyomkövetés súlyossági szintje.
  • Adott URL-címek, kulcsszavak vagy válaszkódok.
  • Gyors válaszok. Más szóval olyan kérések, amelyekre az alkalmazás gyorsan válaszolt.
  • Adott eseménynevek.

Megjegyzés

A szűrők elvarrják az alkalmazás metrikáit. Dönthet például úgy, hogy a lassú válaszok diagnosztizálásához beállít egy szűrőt, hogy elvetje a gyors válaszidőt. Azonban tisztában kell lennie azzal, hogy az Application Insights által jelentett átlagos válaszidő lassabb lesz, mint a valódi sebesség. Emellett a kérések száma kisebb lesz, mint a valós szám.

Ha ez aggodalomra ad okot, használja helyette a Mintavételezés lehetőséget.

Szűrők beállítása

A ApplicationInsights.xmladjon hozzá egy TelemetryProcessors , az alábbi példához hasonló szakaszt:


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

Vizsgálja meg a beépített processzorok teljes készletét.

Beépített szűrők

Ez a szakasz az elérhető beépített szűrőket ismerteti.

Metrika telemetriaszűrő


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: Egyéni metrikák vesszővel tagolt listája

Lapnézet telemetriaszűrője


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: Az időtartam az oldal betöltéséhez szükséges időre vonatkozik. Ha ez a paraméter be van állítva, a rendszer nem jelenti az ennél gyorsabban betöltött lapokat.
  • NotNeededNames: Az oldalnevek vesszővel tagolt listája.
  • NotNeededUrls: URL-töredékek vesszővel tagolt listája. Kiszűri például az "home" url-címben a "kezdőlap" szót tartalmazó összes oldalt.

Kérelem telemetriaszűrője


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

Szintetikus forrásszűrő

Kiszűri az összes olyan telemetriát, amelynek értékei a SyntheticSource tulajdonságban szerepelnek. A robotoktól, a pókoktól és a rendelkezésreállási tesztektől érkező kéréseket a rendszer tartalmazza.

Kiszűri az összes szintetikus kérés telemetriáját:


           <Processor type="SyntheticSourceFilter" />

A telemetria szűrése adott szintetikus források esetében:


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: Szintetikus forrásnevek vesszővel tagolt listája

Telemetriaesemény-szűrő

Szűri a TrackEvent()használatával naplózott egyéni eseményeket:


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: Eseménynevek vesszővel tagolt listája

Telemetriaszűrő nyomon követése

A TrackTrace() vagy egy naplózási keretrendszer gyűjtője által naplózott naplókövetések szűrése:


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • Az FromSeverityLevel érvényes értékek a következők:

    • KI: Kiszűri az összes nyomkövetést.
    • TRACE: Nincs szűrés. A TRACE szinttel egyenlő.
    • INFORMÁCIÓ: Kiszűri a NYOMKÖVETÉSi szintet.
    • WARN: Kiszűri a TRACE és az INFO elemet.
    • HIBA: Kiszűri a WARN, az INFO és a TRACE függvényt.
    • KRITIKUS: Kiszűri a KRITIKUS kivételével az összeset.

Egyéni szűrők

Az alábbi szakaszok bemutatják a saját egyéni szűrők létrehozásának lépéseit.

A szűrő kódolása

A kódban hozzon létre egy osztályt, amely implementálja a következőt 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;
        }
    }

A szűrő meghívása a konfigurációs fájlban

Most ApplicationInsights.xml:



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

A szűrő meghívása (Java Spring)

A Spring-keretrendszeren alapuló alkalmazások esetében az egyéni telemetriai processzorokat beanként kell regisztrálni a fő alkalmazásosztályban. Ezt követően az alkalmazás indításakor automatikusan el lesznek forgatva.

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

Saját szűrőparamétereket hozhat létre a fájlban application.properties. Ezután a Spring Boot külső konfigurációs keretrendszerével adja át ezeket a paramétereket az egyéni szűrőbe.

Hibaelhárítás

Ez a szakasz hibaelhárítási tippet nyújt.

A szűrőm nem működik

Ellenőrizze, hogy érvényes paraméterértékeket adott-e meg. Az időtartamoknak például egész számoknak kell lenniük. Az érvénytelen értékek miatt a szűrő figyelmen kívül lesz hagyva. Ha az egyéni szűrő kivételt jelez egy konstruktorból vagy beállítási módszerből, a rendszer figyelmen kívül hagyja.

gyűjtve: Linux-teljesítménymetrikák az Application Insightsban (elavult)

A Linux rendszerteljesítmény-metrikáinak az Application Insightsban való megismeréséhez telepítse az Application Insights beépülő moduljával együtt gyűjtött elemet. Ez a nyílt forráskódú megoldás különböző rendszer- és hálózati statisztikákat gyűjt.

Általában akkor érdemes használnia collectd , ha már kialakította a Java-webszolgáltatást az Application Insights használatával. További adatokat biztosít az alkalmazás teljesítményének javításához vagy a problémák diagnosztizálásához.

Eszközkulcs lekérése

A Azure Portal nyissa meg az Application Insights-erőforrást, ahol meg szeretné jeleníteni az adatokat. Vagy létrehozhat egy új erőforrást.

Készítsen másolatot az erőforrást azonosító Instrumentation-kulcsról.

Képernyőkép egy Application Insights-erőforrás áttekintési paneljéről a Azure Portal, kiemelt kialakítási kulccsal.

Az összegyűjtött telepítés és a beépülő modul

Linux-kiszolgálói gépeken:

  1. Telepítse az összegyűjtött 5.4.0-s vagy újabb verziót.
  2. Töltse le az Application Insights összegyűjtött író beépülő modulját. Jegyezze fel a verziószámot.
  3. Másolja a beépülő modult a fájlba /usr/share/collectd/java.
  4. Szerkesztés /etc/collectd/collectd.conf:
    • Győződjön meg arról, hogy a Java beépülő modul engedélyezve van.

    • Frissítse a JVMArg értéket, java.class.path hogy tartalmazza a következő jar-t. Frissítse a verziószámot a letöltött verziószámnak megfelelően:

      • /usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
    • Adja hozzá ezt a kódrészletet az erőforrás eszközkulcsával:

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

      Egy mintakonfigurációs fájl része:

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

Konfiguráljon más összegyűjtött beépülő modulokat, amelyek különböző forrásokból gyűjthetnek különböző adatokat.

Indítsa újra collectd a kézi parancsot.

Az adatok megtekintése az Application Insightsban

Az Application Insights-erőforrásban nyissa meg a Metrikákat, és adjon hozzá diagramokat. Válassza ki a megtekinteni kívánt metrikákat az Egyéni kategóriából.

Alapértelmezés szerint a metrikák összesítve lesznek az összes olyan gazdagépen, amelyről a metrikákat gyűjtötték. A metrikák gazdagépenként való megtekintéséhez kapcsolja be a Csoportosítás funkciót a Diagram részletei panelen, majd válassza a CollectD-Host szerinti csoportosítást.

Adott statisztikák feltöltésének kizárása

Alapértelmezés szerint az Application Insights beépülő modul elküldi az összes engedélyezett collectd read beépülő modul által gyűjtött adatokat.

Adatok kizárása adott beépülő modulokból vagy adatforrásokból:

  • Szerkessze a konfigurációs fájlt.

  • A fájlban <Plugin ApplicationInsightsWriter>adja hozzá az irányelvsorokat, például az alábbi táblázatban szereplő sorokat:

    Irányelv Hatás
    Exclude disk Zárja ki a disk beépülő modul által gyűjtött összes adatot.
    Exclude disk:read,write Zárja ki a és write a nevű read forrást a disk beépülő modulból.

Külön irányelvek új vonallal.

Problémákat tapasztal?

Ez a szakasz hibaelhárítási tippeket nyújt.

Nem látok adatokat a portálon

Próbálja ki az alábbi lehetőségeket:

  • Nyissa meg a Keresés elemet annak megtekintéséhez, hogy a nyers események megérkeztek-e. Előfordulhat, hogy hosszabb időt vesz igénybe, hogy megjelenjenek a Metrikák kezelőjében.
  • Előfordulhat, hogy tűzfal-kivételeket kell beállítania a kimenő adatokhoz.
  • Engedélyezze a nyomkövetést az Application Insights beépülő modulban. Adja hozzá ezt a sort a következőn belül <Plugin ApplicationInsightsWriter>:
    • SDKLogger true
  • Nyisson meg egy terminált, és kezdje collectd részletes módban a jelentéssel kapcsolatos problémák megtekintéséhez:
    • sudo collectd -f

Ismert probléma

Az Application Insights írási beépülő modulja nem kompatibilis bizonyos olvasási beépülő modulokkal. Egyes beépülő modulok néha küldenek NaN, de az Application Insights beépülő modul lebegőpontos számot vár.

  • Hibajelenség: A collectd napló azokat a hibákat jeleníti meg, amelyek a következőt tartalmazzák: "AI: ... SyntaxError: Váratlan token N."
  • Megkerülő megoldás: A probléma írási beépülő moduljai által gyűjtött adatok kizárása.

A mikrométeres alkalmazásmonitorozás a JVM-alapú alkalmazáskód metrikáit méri, és lehetővé teszi az adatok exportálását a kedvenc figyelési rendszerekbe. Ez a szakasz bemutatja, hogyan használhatja a Micrometert az Application Insights szolgáltatással Spring Boot- és nem Spring Boot-alkalmazásokhoz is.

A Spring Boot 1.5x használata

Adja hozzá a következő függőségeket a pom.xml vagy build.gradle fájlhoz:

Kövesse az alábbi lépéseket:

  1. Frissítse a Spring Boot-alkalmazás pom.xml fájlját, és adja hozzá a következő függőségeket:

    <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. Frissítse az application.properties vagy az YML fájlt az Application Insights eszközkulcsával a következő tulajdonság használatával:

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

  3. Hozza létre és futtassa az alkalmazást.

Az előző lépéseknek az Azure Monitorba automatikusan beszúrt előre összesített metrikákkal kell üzembe helyezést elérniük.

A Spring 2.x használata

Adja hozzá a következő függőségeket a pom.xml vagy build.gradle fájlhoz:

Kövesse az alábbi lépéseket:

  1. Frissítse a Spring Boot-alkalmazás pom.xml fájlját, és adja hozzá a következő függőséget:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Frissítse az application.properties vagy az YML fájlt az Application Insights eszközkulcsával a következő tulajdonság használatával:

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

  3. Hozza létre és futtassa az alkalmazást.

Az előző lépéseknek automatikusan az Azure Monitorba automatikusan kiosztott előre összesített metrikákkal kell futniuk. Az Application Insights Spring Boot starter finomhangolásáról további információt a GitHubon található olvasási útmutatóban talál.

Alapértelmezett metrikák:

  • A Tomcat, a JVM, a Logback Metrics, a Log4J-metrikák, az üzemidő-metrikák, a processzormetrikák és a FileDescriptorMetrics automatikusan konfigurálta a metrikákat.
  • Ha például a Netflix Hystrix megtalálható az osztályútvonalon, ezeket a metrikákat is megkapjuk.
  • A megfelelő bab hozzáadásával a következő metrikák érhetők el:
    • CacheMetrics(CaffeineCache, , GuavaCacheEhCache2, HazelcastCache, és JCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • OkHttp3-metrikák
    • Kafka-metrikák

Az automatikus metrikák gyűjtésének kikapcsolása:

  • JVM-metrikák:
    • management.metrics.binders.jvm.enabled=false
  • Bejelentkezési metrikák:
    • management.metrics.binders.logback.enabled=false
  • Üzemidő-metrikák:
    • management.metrics.binders.uptime.enabled=false
  • Processzormetrikák:
    • management.metrics.binders.processor.enabled=false
  • FileDescriptorMetrics:
    • management.metrics.binders.files.enabled=false
  • Hystrix-metrikák, ha a kódtár a következőn van classpath:
    • management.metrics.binders.hystrix.enabled=false
  • AspectJ-metrikák, ha a kódtár a következőn van classpath:
    • spring.aop.enabled=false

Megjegyzés

Adja meg az előző tulajdonságokat a Spring Boot-alkalmazás application.properties vagy application.yml fájljában.

Micrometer használata nem Spring Boot-webalkalmazásokkal

Adja hozzá a következő függőségeket a pom.xml vagy build.gradle fájlhoz:

Kövesse az alábbi lépéseket:

  1. Adja hozzá a következő függőségeket a pom.xml vagy build.gradle fájlhoz:

        <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. Ha még nem tette meg, adja hozzá a ApplicationInsights.xml fájlt az erőforrások mappába. További információ: ApplicationInsights.xml fájl hozzáadása.

  3. Servlet-mintaosztály (időzítőmetrikát bocsát ki):

        @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. Mintakonfigurációs osztály:

         @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) {
    
           }
         }
    

A metrikákkal kapcsolatos további információkért tekintse meg a Micrometer dokumentációját.

A különböző metrikák létrehozásának módjával kapcsolatos további mintakódok a hivatalos Micrometer GitHub-adattárban találhatók.

További metrikák gyűjteményének kötése

Az alábbi szakaszok bemutatják, hogyan gyűjthet további metrikákat.

SpringBoot/Spring

Hozzon létre egy babot a megfelelő metrikakategóriából. Tegyük fel például, hogy Guava Cache-metrikákra van szüksége:

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

Több metrika alapértelmezés szerint nincs engedélyezve, de az előző módon kötött. A teljes listát a Micrometer GitHub-adattárban találja.

Nem Spring-alkalmazások

Adja hozzá a következő kötéskódot a konfigurációs fájlhoz:

    New GuavaCacheMetrics().bind(registry);

Következő lépések