Dela via


Application Insights för Java 2.x

Varning

Den här artikeln gäller För Application Insights Java 2.x, som inte längre rekommenderas.

Dokumentation för den senaste versionen finns i Application Insights Java 3.x.

I den här artikeln får du lära dig hur du använder Application Insights Java 2.x. Den här artikeln visar hur du:

  • Kom igång och lär dig hur du instrumenterar begäranden, spårar beroenden, samlar in prestandaräknare, diagnostiserar prestandaproblem och undantag och skriver kod för att spåra vad användarna gör med din app.
  • Skicka spårningsloggar till Application Insights och utforska dem med hjälp av Application Insights-portalen.
  • Övervaka beroenden, fångade undantag och körningstider för metoder i Java-webbappar.
  • Filtrera telemetri i Java-webbappen.
  • Utforska prestandamått för Linux-system i Application Insights med hjälp collectdav .
  • Mät mått för JVM-baserad programkod (Java Virtual Machine). Exportera data till dina favoritövervakningssystem med hjälp av mikrometerprogramövervakning.

Anteckning

Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergång till anslutningssträngar för att dra nytta av nya funktioner.

Komma igång med Application Insights i ett Java-webbprojekt

I det här avsnittet använder du Application Insights SDK för att instrumentera begäranden, spåra beroenden, samla in prestandaräknare, diagnostisera prestandaproblem och undantag och skriva kod för att spåra vad användarna gör med din app.

Application Insights är en utökningsbar analystjänst för webbutvecklare som hjälper dig att förstå prestanda och användningen av ditt liveprogram. Application Insights har stöd för Java-appar som körs på Linux, Unix eller Windows.

Förutsättningar

Du behöver:

Hämta en Application Insights-instrumenteringsnyckel

  1. Logga in på Azure-portalen.

  2. Skapa en Application Insights-resurs på Azure Portal. Ange programtypen till Java-webbapp.

  3. Leta upp instrumenteringsnyckeln för den nya resursen. Du kommer att behöva klistra in den här nyckeln i projektkoden inom kort.

    Skärmbild av fönstret Översikt för en Application Insights-resurs i Azure Portal med instrumentationsnyckeln markerad.

Lägga till Application Insights SDK för Java till ditt projekt

Välj projekttyp.

Om projektet redan har konfigurerats för att använda Maven för kompilering sammanfogar du följande kod till dinpom.xml-fil . Uppdatera sedan projektberoendena för att få binärfilerna.

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

Vanliga frågor och svar

  • Vad är relationen mellan komponenterna -web-auto, -weboch -core ?

    • applicationinsights-web-auto ger dig mått som spårar antalet HTTP servlet-begäranden och svarstider genom att automatiskt registrera Application Insights servlet-filtret vid körning.
    • applicationinsights-web ger dig också mått som spårar antal HTTP servlet-begäranden och svarstider. Men manuell registrering av Application Insights servlet-filtret i ditt program krävs.
    • applicationinsights-core ger dig det tomma API:et, till exempel om ditt program inte är servlet-baserat.
  • Hur uppdaterar jag SDK till den senaste versionen?

    • Från och med november 2020 rekommenderar vi att du använder Application Insights Java 3.x för att övervaka Java-program. Mer information om hur du kommer igång finns i Application Insights Java 3.x.

Lägga till en ApplicationInsights.xml-fil

Lägg till ApplicationInsights.xml i resursmappen i projektet eller kontrollera att den har lagts till i projektets distributionsklasssökväg. Kopiera följande XML-kod till den.

Ersätt instrumentationsnyckeln med den som du fick från 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>

Om du vill kan konfigurationsfilen finnas på valfri plats som är tillgänglig för ditt program. Systemegenskapen -Dapplicationinsights.configurationDirectory anger den katalog som innehåller ApplicationInsights.xml. Till exempel konfigureras en konfigurationsfil som finns på E:\myconfigs\appinsights\ApplicationInsights.xml med egenskapen -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights".

  • Instrumenteringsnyckeln skickas tillsammans med alla element i telemetrin och uppmanar Application Insights att visa den i din resurs.
  • Komponenten HTTP-begäran är valfri. Den skickar automatiskt telemetri om förfrågningar och svarstider till portalen.
  • Händelsekorrelation är ett tillägg till komponenten HTTP-begäran. Den tilldelar en identifierare till varje begäran som tas emot av servern. Den lägger sedan till den här identifieraren som en egenskap för varje objekt i telemetrin som egenskapen Operation.Id. Det gör att du kan korrelera telemetrin som är associerad med varje begäran genom att ange ett filter i Diagnostiksökning.

Olika sätt att konfigurera instrumenteringsnyckeln på

Application Insights SDK:n söker efter nyckeln i följande ordning:

  • Systemegenskap: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
  • Miljövariabel: APPINSIGHTS_INSTRUMENTATIONKEY
  • Konfigurationsfil: ApplicationInsights.xml

Du kan också ange den i koden:

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

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

Lägg till agent

Installera Java-agenten för att samla in utgående HTTP-anrop, JDBC-frågor, programloggning och bättre namngivning av åtgärder.

Köra ditt program

Kör den antingen i felsökningsläge på utvecklingsdatorn eller publicera den på servern.

Visa telemetrin i Application Insights

Gå tillbaka till Application Insights-resursen i Azure Portal.

HTTP-begärandedata visas i översiktsfönstret. Om den inte finns där väntar du några sekunder och väljer sedan Uppdatera.

Skärmbild som visar exempeldata för översikt.

Läs mer om mått.

Klicka dig vidare i diagrammen om du vill visa mer detaljerade aggregerade mätvärden.

Skärmbild som visar ett Application Insights-felfönster med diagram.

Instansdata

Klicka dig vidare inom en specifik begärandetyp om du vill visa enskilda instanser.

Skärmbild som visar detaljgranskning i en specifik exempelvy.

Log Analytics: Kraftfullt frågespråk

När du samlar in mer data kan du köra frågor för att aggregera data och hitta enskilda instanser. Log Analytics är ett kraftfullt verktyg för att förstå prestanda och användning och för diagnostiska ändamål.

Skärmbild som visar ett exempel på Log Analytics i Azure Portal.

Installera din app på servern

Publicera appen på servern, låt användarna använda den och se hur telemetrin visas i portalen.

  • Kontrollera att din brandvägg tillåter programmet att skicka telemetri till följande portar:

    • dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443
  • Om utgående trafik måste dirigeras via en brandvägg definierar du systemegenskaperna http.proxyHost och http.proxyPort.

  • Installera följande på Windows-servrar:

konfiguration av Azure App Service, Azure Kubernetes Service, virtuella datorer

Den bästa och enklaste metoden för att övervaka dina program som körs på azure-resursproviders är att använda Application Insights Java 3.x.

Fel relaterade till begäranden och undantag

Ohanterade undantag och begärandefel samlas automatiskt in av Application Insights-webbfiltret.

Om du vill samla in data om andra undantag kan du infoga anrop till trackException() i koden.

Övervaka metodanrop och externa beroenden

Installera Java-agenten för att logga angivna interna metoder och anrop som görs via JDBC, med tidsdata och för automatisk namngivning av åtgärder.

W3C-distribuerad spårning

Application Insights Java SDK stöder nu W3C-distribuerad spårning.

Den inkommande SDK-konfigurationen förklaras ytterligare i Telemetrikorrelation i Application Insights.

Utgående SDK-konfiguration definieras i filenAI-Agent.xml .

Prestandaräknare

Välj Undersök>mått för att se ett antal prestandaräknare.

Skärmbild som visar fönstret Mått för en Application Insights-resurs i Azure Portal med bearbeta privata byte valda.

Anpassa samlingen med prestandaräknare

Om du vill inaktivera insamling av standarduppsättningen med prestandaräknare lägger du till följande kod under rotnoden i ApplicationInsights.xml-filen :

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

Samla in fler prestandaräknare

Du kan ange fler prestandaräknare som ska samlas in.

JMX-räknare (exponeras av den virtuella Java-datorn)
    <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: Namnet som visas i Application Insights-portalen.
  • objectName: JMX-objektnamnet.
  • attribute: Attributet för JMX-objektnamnet som ska hämtas.
  • type (valfritt): Typen av JMX-objekts attribut:
    • Standard: En enkel typ, till exempel int eller long.
    • composite: Prestandaräknardata har formatet Attribute.Data.
    • tabular: Prestandaräknardata är i formatet för en tabellrad.
Windows-prestandaräknare

Varje Windows-prestandaräknare är medlem i en kategori (på samma sätt som ett fält är medlem i en klass). Kategorier kan antingen vara globala eller ha numrerade eller namngivna instanser.

    <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: Namnet som visas i Application Insights-portalen.
  • categoryName: Prestandaräknarkategorin (prestandaobjekt) som den här prestandaräknaren är associerad med.
  • counterName: Namnet på prestandaräknaren.
  • instanceName: Namnet på prestandaräknarkategoriinstansen eller en tom sträng (""), om kategorin innehåller en enda instans. Om categoryName är Process och prestandaräknaren som du vill samla in kommer från den aktuella JVM-processen där appen körs anger du "__SELF__".

Unix-prestandaräknare

Installera som samlas in med Application Insights-plugin-programmet för att få en mängd olika system- och nätverksdata.

Samla in användar- och sesionsdata

Nu skickar du telemetri från webbservern. Om du vill få en fullständig 360-graders vy över ditt program kan du lägga till mer övervakning:

Skicka din egen telemetri

Nu när du har installerat SDK:n kan du använda API:et för att skicka din egen telemetri:

Webbtester för tillgänglighet

Application Insights kan testa din webbplats med jämna mellanrum för att kontrollera att tjänsten är tillgänglig och att den svarar.

Läs mer om hur du konfigurerar webbtester för tillgänglighet.

Felsökning

Se den dedikerade felsökningsartikeln.

Testa anslutningen mellan programvärden och inmatningstjänsten

Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop till våra inmatningsslutpunkter. Du kan testa anslutningen från webbservern eller programvärddatorn till inmatningstjänstens slutpunkter med hjälp av råa REST-klienter från PowerShell- eller curl-kommandon. Se Felsöka programtelemetri som saknas i Azure Monitor Application Insights.

Utforska Java-spårningsloggar i Application Insights

Om du använder Logback eller Log4J (v1.2 eller v2.0) för spårning kan du få spårningsloggarna automatiskt skickade till Application Insights där du kan utforska och söka efter dem.

Tips

Du behöver bara ange Application Insights-instrumenteringsnyckeln en gång för ditt program. Om du använder ett ramverk som Java Spring kanske du redan har registrerat nyckeln någon annanstans i appens konfiguration.

Använda Application Insights Java-agenten

Som standard samlar Application Insights Java-agenten automatiskt in loggning som utförs på nivån WARN och högre.

Du kan ändra tröskelvärdet för loggning som samlas in med hjälp av filenAI-Agent.xml :

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

Du kan inaktivera Loggningsinsamling för Java-agenten med hjälp av filenAI-Agent.xml :

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

Alternativ

I stället för att använda Java-agenten kan du följa dessa instruktioner.

Installera Java SDK

Följ anvisningarna för att installera Application Insights SDK för Java, om du inte redan har gjort det.

Lägga till loggningsbibliotek i projektet

Välj lämplig metod för ditt projekt.

Maven

Om projektet redan har konfigurerats för att använda Maven för kompilering sammanfogar du något av följande kodfragment i pom.xml filen. Uppdatera sedan projektberoendena för att få binärfilerna.

Tillbakaloggning


    <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

Om projektet redan har konfigurerats för att använda Gradle för kompilering lägger du till en av följande rader dependencies i gruppen i filen build.gradle . Uppdatera sedan projektberoendena för att få binärfilerna.

Tillbakaloggning


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

Följ riktlinjerna för att installera Application Insights Java SDK manuellt och ladda ned jar-filen. På sidan Maven Central väljer du jar länken i nedladdningsavsnittet för rätt tillägg. Lägg till den nedladdade tilläggsburken i projektet.

Logger Ladda ned Bibliotek
Tillbakaloggning Logback-tillägg Jar applicationinsights-logging-logback
Log4J v2.0 Log4J v2 tilläggs-Jar applicationinsights-logging-log4j2
Log4j v1.2 Log4J v1.2 tilläggs-Jar applicationinsights-logging-log4j1_2

Lägga till tillägget i ditt loggningsramverk

Börja hämta spårningar genom att sammanfoga det relevanta kodfragmentet till Logback- eller Log4J-konfigurationsfilen.

Tillbakaloggning


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

Application Insights-appavsändare kan refereras av alla konfigurerade loggare och inte nödvändigtvis av rotloggaren, som du ser i föregående kodexempel.

Utforska dina spårningar i Application Insights-portalen

Nu när du har konfigurerat projektet för att skicka spårningar till Application Insights kan du visa och söka i dessa spårningar i Application Insights-portalen i fönstret Sök .

Undantag som skickas via loggare visas i portalen som undantagstelemetri .

Skärmbild som visar fönstret Sök efter en Application Insights-resurs i Azure Portal.

Övervaka beroenden, fångade undantag och körningstider för metoder i Java-webbappar

Om du har instrumenterat din Java-webbapp med Application Insights SDK kan du använda Java-agenten för att få djupare insikter, utan några kodändringar:

  • Beroenden: Data om anrop som ditt program gör till andra komponenter, inklusive:

    • Utgående HTTP-anrop: Anrop som görs via Apache HttpClient, OkHttpoch java.net.HttpURLConnection samlas in.
    • Redis-samtal: Samtal som görs via Jedis-klienten fångas.
    • JDBC-frågor: För MySQL och PostgreSQL rapporterar agenten frågeplanen om anropet tar längre tid än 10 sekunder.
  • Programloggning: Avbilda och korrelera dina programloggar med HTTP-begäranden och annan telemetri:

    • Log4j 1.2
    • Log4j2
    • Tillbakaloggning
  • Namn på bättre åtgärder: Används för aggregering av begäranden i portalen.

    • Spring: Baserat på @RequestMapping.
    • JAX-RS: Baserat på @Path.

Om du vill använda Java-agenten installerar du den på servern. Dina webbappar måste instrumenteras med Application Insights Java SDK.

Installera Application Insights-agenten för Java

  1. Ladda ned 2.x-agenten på den dator som kör Java-servern. Kontrollera att den version av 2.x Java-agenten som du använder matchar den version av 2.x Application Insights Java SDK som du använder.

  2. Redigera programserverns startskript och lägg till följande JVM-argument:

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

    Till exempel i Tomcat på en Linux-dator:

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

  3. Starta om programservern.

Konfigurera agenten

Skapa en fil med namnet AI-Agent.xml och placera den i samma mapp som agent jar-filen.

Ange innehållet i XML-filen. Redigera följande exempel för att inkludera eller utelämna de funktioner som du vill använda.

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

Mer konfiguration (Spring Boot)

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

Följ dessa steg för Azure App Service:

  1. Välj Inställningar>Programinställningar.

  2. Under Appinställningar lägger du till ett nytt nyckelvärdepar:

    • Nyckel: JAVA_OPTS
    • Värde: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar

    Agenten måste paketeras som en resurs i projektet så att den hamnar i katalogen D:/home/site/wwwroot/ . Om du vill bekräfta att din agent är i rätt App Service katalog går du tillFelsökningskonsolen för utvecklingsverktyg>avancerade verktyg> och undersöker innehållet i webbplatskatalogen.

  3. Spara inställningarna och starta om appen. De här stegen gäller endast för apptjänster som körs i Windows.

Anteckning

AI-Agent.xml och agent jar-filen ska finnas i samma mapp. De placeras ofta tillsammans i mappen /resources i projektet.

Aktivera W3C-distribuerad spårning

Lägg till följande kodfragment i AI-Agent.xml:

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

Anteckning

Bakåtkompatibilitetsläget är aktiverat som standard. Parametern enableW3CBackCompat är valfri och bör endast användas när du vill inaktivera den.

Helst skulle detta vara fallet när alla dina tjänster har uppdaterats till nyare versioner av SDK:er som stöder W3C-protokollet. Vi rekommenderar att du flyttar till nyare versioner av SDK:er med W3C-stöd så snart som möjligt.

Kontrollera att både inkommande och utgående (agent)-konfigurationer är exakt desamma.

Visa data

I Application Insights-resursen visas aggregerade fjärrberoenden och körningstider för metoder under panelen Prestanda.

Om du vill söka efter enskilda instanser av beroende-, undantags- och metodrapporter öppnar du Sök.

Läs mer om hur du diagnostiserar beroendeproblem.

Frågor eller problem?

Använd följande resurser:

Filtrera telemetri i din Java-webbapp

Filter är ett sätt att välja den telemetri som Java-webbappen skickar till Application Insights. Det finns några färdiga filter som du kan använda. Du kan också skriva egna anpassade filter.

De färdiga filtren omfattar:

  • Spåra allvarlighetsgrad.
  • Specifika URL:er, nyckelord eller svarskoder.
  • Snabba svar. Med andra ord begäranden som appen svarade på snabbt.
  • Specifika händelsenamn.

Anteckning

Filter förvränger måtten för din app. Du kan till exempel välja att du ställer in ett filter för att ignorera snabba svarstider för att diagnostisera långsamma svar. Men du måste vara medveten om att de genomsnittliga svarstiderna som rapporteras av Application Insights sedan blir långsammare än den sanna hastigheten. Dessutom är antalet begäranden mindre än det verkliga antalet.

Om detta är ett problem använder du Sampling i stället.

Ange filter

I ApplicationInsights.xmllägger du till ett TelemetryProcessors avsnitt som det här exemplet:


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

Granska den fullständiga uppsättningen inbyggda processorer.

Inbyggda filter

I det här avsnittet beskrivs de inbyggda filter som är tillgängliga.

Telemetrifilter för mått


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: Kommaavgränsad lista över anpassade måttnamn

Telemetrifilter för sidvisning


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: Varaktighet avser den tid det tar att läsa in sidan. Om den här parametern anges rapporteras inte sidor som har lästs in snabbare än den här gången.
  • NotNeededNames: Kommaavgränsad lista över sidnamn.
  • NotNeededUrls: Kommaavgränsad lista över URL-fragment. Filtrerar "home" till exempel bort alla sidor som har "hem" i URL:en.

Begär telemetrifilter


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

Filter för syntetisk källa

Filtrerar bort all telemetri som har värden i egenskapen SyntheticSource . Begäranden från robotar, spindlar och tillgänglighetstester ingår.

Filtrerar bort telemetri för alla syntetiska begäranden:


           <Processor type="SyntheticSourceFilter" />

Filtrerar bort telemetri för specifika syntetiska källor:


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: Kommaavgränsad lista över syntetiska källnamn

Filter för telemetrihändelse

Filtrerar anpassade händelser som loggats med TrackEvent():


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: Kommaavgränsad lista över händelsenamn

Spåra telemetrifilter

Filtrerar loggspårningar som loggats med hjälp av TrackTrace() eller en loggningsramverksinsamlare:


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • Giltiga FromSeverityLevel värden är:

    • AV: Filtrerar bort alla spårningar.
    • TRACE: Ingen filtrering. Är lika med TRACE-nivå.
    • INFO: Filtrerar bort SPÅRNINGsnivå.
    • VARNA: Filtrerar bort SPÅRNING och INFO.
    • FEL: Filtrerar bort WARN, INFO och TRACE.
    • KRITISK: Filtrerar ut allt utom KRITISKt.

Anpassade filter

I följande avsnitt visas stegen för att skapa egna anpassade filter.

Koda filtret

I koden skapar du en klass som implementerar 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;
        }
    }

Anropa filtret i konfigurationsfilen

Nu i ApplicationInsights.xml:



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

Anropa filtret (Java Spring)

För program som baseras på Spring-ramverket måste anpassade telemetriprocessorer registreras i din huvudprogramklass som en böna. De kommer sedan att kopplas automatiskt när programmet startas.

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

Du skapar egna filterparametrar i application.properties. Sedan använder du Spring Boots externaliserade konfigurationsramverk för att skicka dessa parametrar till ditt anpassade filter.

Felsökning

Det här avsnittet innehåller ett felsökningstips.

Mitt filter fungerar inte

Kontrollera att du har angett giltiga parametervärden. Varaktigheter bör till exempel vara heltal. Ogiltiga värden gör att filtret ignoreras. Om ditt anpassade filter genererar ett undantag från en konstruktor eller uppsättningsmetod ignoreras det.

samlad: Prestandamått för Linux i Application Insights (inaktuell)

Om du vill utforska prestandamått för Linux-system i Application Insights installerar du det som samlas in tillsammans med plugin-programmet Application Insights. Den här lösningen med öppen källkod samlar in olika system- och nätverksstatistik.

Vanligtvis använder collectd du om du redan har instrumenterat din Java-webbtjänst med Application Insights. Det ger dig mer data som hjälper dig att förbättra appens prestanda eller diagnostisera problem.

Hämta instrumentationsnyckeln

I Azure Portal öppnar du Application Insights-resursen där du vill att data ska visas. Eller så kan du skapa en ny resurs.

Ta en kopia av instrumenteringsnyckeln som identifierar resursen.

Skärmbild som visar översiktsfönstret för en Application Insights-resurs i Azure Portal med instrumentationsnyckeln markerad.

Installera collectd och plugin-programmet

På dina Linux-serverdatorer:

  1. Installera samlad version 5.4.0 eller senare.
  2. Ladda ned plugin-programmet application insights collectd writer. Observera versionsnumret.
  3. Kopiera plugin-programmets jar-fil till /usr/share/collectd/java.
  4. Redigera /etc/collectd/collectd.conf:
    • Kontrollera att Java-plugin-programmet är aktiverat.

    • Uppdatera JVMArg för java.class.path att inkludera följande jar. Uppdatera versionsnumret så att det matchar det du laddade ned:

      • /usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
    • Lägg till det här kodfragmentet med hjälp av instrumentationsnyckeln från resursen:

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

      Här är en del av en exempelkonfigurationsfil:

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

Konfigurera andra insamlade plugin-program som kan samla in olika data från olika källor.

Starta om collectd enligt dess handbok.

Visa data i Application Insights

Öppna Mått i Application Insights-resursen och lägg till diagram. Välj de mått som du vill se i kategorin Anpassad .

Som standard aggregeras måtten över alla värddatorer som måtten samlades in från. Om du vill visa måtten per värd går du till fönstret Diagraminformation , aktiverar Gruppering och väljer sedan att gruppera efter CollectD-Host.

Exkludera uppladdning av specifik statistik

Som standard skickar Application Insights-plugin-programmet alla data som samlas in av alla aktiverade collectd read plugin-program.

Så här exkluderar du data från specifika plugin-program eller datakällor:

  • Redigera konfigurationsfilen.

  • I <Plugin ApplicationInsightsWriter>lägger du till direktivrader som de i följande tabell:

    Direktiv Effekt
    Exclude disk Undanta alla data som samlas in av disk plugin-programmet.
    Exclude disk:read,write Undanta källorna med namnet read och write från disk plugin-programmet.

Avgränsa direktiv med en ny rad.

Har du problem?

Det här avsnittet innehåller felsökningstips.

Jag ser inte data i portalen

Prova följande alternativ:

  • Öppna Sök för att se om råhändelserna har anlänt. Ibland tar det längre tid att visas i Metrics Explorer.
  • Du kan behöva ange brandväggsfel för utgående data.
  • Aktivera spårning i Application Insights-plugin-programmet. Lägg till den här raden i <Plugin ApplicationInsightsWriter>:
    • SDKLogger true
  • Öppna en terminal och börja collectd i utförligt läge för att se eventuella problem som rapporteras:
    • sudo collectd -f

Kända problem

Application Insights-plugin-programmet är inte kompatibelt med vissa läs-plugin-program. Vissa plugin-program skickar NaNibland , men Application Insights-plugin-programmet förväntar sig ett flyttalsnummer.

  • Symptom: Loggen collectd visar fel som inkluderar "AI: ... SyntaxError: Oväntad token N."
  • Lösning: Undanta data som samlas in av problemskrivnings-plugin-program.

Övervakning av mikrometerprogram mäter mått för JVM-baserad programkod och gör att du kan exportera data till dina favoritövervakningssystem. I det här avsnittet får du lära dig hur du använder Micrometer med Application Insights för både Spring Boot- och icke-Spring Boot-program.

Använda Spring Boot 1.5x

Lägg till följande beroenden i filenpom.xml eller build.gradle :

Följ de här stegen:

  1. Uppdatera pom.xml-filen i Spring Boot-programmet och lägg till följande beroenden i den:

    <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. Uppdatera filen application.properties eller YML med Instrumentationsnyckeln för Application Insights med hjälp av följande egenskap:

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

  3. Skapa ditt program och kör det.

Föregående steg bör få igång dig med föraggregerade mått som samlas in automatiskt i Azure Monitor.

Använda Spring 2.x

Lägg till följande beroenden i filenpom.xml eller build.gradle :

  • Application Insights Spring-boot-starter 2.1.2 eller senare
  • Azure-spring-boot-metrics-starters 2.0.7 eller senare
  • Application Insights-resurs

Följ de här stegen:

  1. Uppdatera pom.xml-filen i Spring Boot-programmet och lägg till följande beroende i det:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Uppdatera filen application.properties eller YML med Instrumentationsnyckeln för Application Insights med hjälp av följande egenskap:

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

  3. Skapa ditt program och kör det.

Föregående steg bör få dig att köra med föraggregerade mått som samlas in automatiskt i Azure Monitor. Mer information om hur du finjusterar Application Insights Spring Boot-startprogrammet finns i readme på GitHub.

Standardmått:

  • Automatiskt konfigurerade mått för Tomcat, JVM, Logback Metrics, Log4J Metrics, Uptime Metrics, Processor Metrics och FileDescriptorMetrics.
  • Om Netflix Hystrix till exempel finns på klasssökvägen får vi även dessa mått.
  • Följande mått kan vara tillgängliga genom att lägga till respektive bönor:
    • CacheMetrics (CaffeineCache, EhCache2, GuavaCache, HazelcastCacheoch JCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • OkHttp3 Metrics
    • Kafka Metrics

Inaktivera automatisk insamling av mått:

  • JVM-mått:
    • management.metrics.binders.jvm.enabled=false
  • Tillbakaloggningsmått:
    • management.metrics.binders.logback.enabled=false
  • Drifttidsmått:
    • management.metrics.binders.uptime.enabled=false
  • Processormått:
    • 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
  • AspectJ-mått om biblioteket på classpath:
    • spring.aop.enabled=false

Anteckning

Ange föregående egenskaper i filen application.properties eller application.yml i Spring Boot-programmet.

Använda Mikrometer med webbprogram som inte är Spring Boot

Lägg till följande beroenden i filenpom.xml eller build.gradle :

Följ de här stegen:

  1. Lägg till följande beroenden i filenpom.xml eller build.gradle :

        <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. Om du inte redan har gjort det lägger du till filenApplicationInsights.xml i resursmappen. Mer information finns i Lägga till en ApplicationInsights.xml fil.

  3. Exempel på Servlet-klass (genererar ett timermått):

        @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. Exempelkonfigurationsklass:

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

Mer information om mått finns i dokumentationen om mikrometer.

Annan exempelkod om hur du skapar olika typer av mått finns i den officiella GitHub-lagringsplatsen för mikrometer.

Binda fler måttsamling

Följande avsnitt visar hur du samlar in fler mått.

SpringBoot/Spring

Skapa en böna för respektive måttkategori. Anta till exempel att du behöver Guava Cache-mått:

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

Flera mått är inte aktiverade som standard men kan bindas på föregående sätt. En fullständig lista finns i GitHub-lagringsplatsen För mikrometer.

Appar som inte är Spring-appar

Lägg till följande bindningskod i konfigurationsfilen:

    New GuavaCacheMetrics().bind(registry);

Nästa steg