Dela via


Application Insights för Java 2.x

Försiktighet

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

Dokumentation för den senaste versionen finns på 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 gör följande:

  • 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 exekveringstider för metoder i Java-webbappar.
  • Filtrera telemetri i din Java-webbapp.
  • 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.

Anmärkning

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å till anslutningssträngar för att dra nytta av nya funktioner.

Kom 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ändning av ditt liveprogram. Application Insights stöder Java-appar som körs i Linux, Unix eller Windows.

Förutsättningar

Du måste:

Hämta en Application Insights-instrumentationsnyckel

  1. Logga in på Azure-portalen.

  2. Skapa en Application Insights-resurs i Azure-portalen. Ange programtypen till Java-webbapp.

  3. Hitta instrumentationsnyckeln för den nya resursen. Du måste klistra in den här nyckeln i kodprojektet inom kort.

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

Lägg till Application Insights SDK för Java i projektet

Välj projekttyp.

Om ditt projekt 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 hämta 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

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

    • applicationinsights-web-auto ger dig mått som spårar antal 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 ska jag uppdatera SDK:t till den senaste versionen?

    • Från och med november 2020 rekommenderar vi att du använder Application Insights Java 3.x för övervakning av 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 se till att den läggs till i projektets distributionsklasssökväg. Kopiera följande XML till den.

Ersätt instrumentationsnyckeln med den som du fick från Azure-portalen.

<?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. En konfigurationsfil som finns på E:\myconfigs\appinsights\ApplicationInsights.xml konfigureras till exempel med egenskapen -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights".

  • Instrumentationsnyckeln skickas tillsammans med varje telemetriobjekt och instruerar Application Insights att visa den i din resurs.
  • HTTP-begärandekomponenten är valfri. Den skickar automatiskt telemetri om begäranden och svarstider till portalen.
  • Händelsekorrelation är ett tillägg till HTTP-begärandekomponenten. 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 telemetriobjekt 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.

Alternativa sätt att ange instrumentationsnyckeln

Application Insights SDK söker efter nyckeln i den här ordningen:

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

Du kan också ange den i kod:

    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ör ditt program

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

Visa telemetridata i Application Insights

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

HTTP-begärandens data 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 översiktsexempeldata.

Läs mer om mätvärden.

Klicka dig igenom ett diagram om du vill se mer detaljerade aggregerade mått.

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

Instansdata

Klicka dig igenom en specifik typ av begäran för att se enskilda instanser.

Skärmbild som visar en fördjupad analys 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-portalen.

Installera appen på servern

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

  • Kontrollera att brandväggen tillåter att programmet skickar telemetri till dessa 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 på Windows-servrar:

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

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

Undantag och fel vid begäran

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 på log-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 panelen Metrics för en Application Insights-resurs i Azure-portalen med processens privata byte valda.

Anpassa insamling av 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 (exponerade 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: Perf-räknardata är i formatet Attribute.Data.
    • tabular: Perf-räknardata är i formatet för en tabellrad.
Prestandaräknare för Windows

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äknarens kategori (prestandaobjekt) som den här prestandaräknaren är associerad med.
  • counterName: Namnet på prestandaräknaren.
  • instanceName: Namnet på prestandaräknarens kategoriinstans 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 som appen körs på anger du "__SELF__".

Unix-prestandaräknare

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

Hämta användar- och sessionsdata

Nu skickar du telemetri från webbservern. Om du vill få en fullständig 360-gradersvy av 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 den är igång och svarar bra.

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

Felsökning

Se den dedikerade felsökningsartikeln.

Testa anslutningen mellan din applikationsvärd och insamlingstjä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 slutpunkterna för inmatningstjänsten 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 skickade automatiskt till Application Insights där du kan utforska och söka efter dem.

Tips/Råd

Du behöver bara ange instrumentationsnyckeln för Application Insights 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 ovan.

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 Java-agentens loggningsavbildning med hjälp av filenAI-Agent.xml :

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

Alternatives

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 rätt sätt för projektet.

Maven

Om ditt projekt redan har konfigurerats för att använda Maven för build sammanfogar du något av följande kodfragment i dinpom.xml-fil . Uppdatera sedan projektberoendena för att hämta 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 build lägger du till någon av följande rader dependencies i gruppen i filen build.gradle . Uppdatera sedan projektberoendena för att hämta 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 lämpligt tillägg. Lägg till den nedladdade appender-jar-filen i projektet.

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

Lägg till tillägget i ditt loggningsramverk

Om du vill börja hämta spårningar sammanfogar du det relevanta kodfragmentet till konfigurationsfilen Logback eller Log4J.

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-appenders kan refereras av alla konfigurerade loggare och inte nödvändigtvis av rotloggaren, som visas 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 sökfönstret .

Undantag som skickas via loggare kommer att visas på portalen som Exception-telemetri.

Skärmbild som visar sökfönstret för en Application Insights-resurs i Azure-portalen.

Ö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 programmet gör till andra komponenter, inklusive:

    • Utgående HTTP-anrop: Anrop som görs via Apache HttpClient, OkHttpoch java.net.HttpURLConnection registreras.
    • 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: Samla in och korrelera dina programloggar med HTTP-begäranden och annan telemetri:

    • Log4j 1.2
    • Log4j2
    • Tillbakaloggning
  • Bättre namngivning av å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 startskriptet för programservern 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 om du vill 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 finns i rätt App Service-katalog går du tillFelsökningskonsolen för >> 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.

Anmärkning

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>

Anmärkning

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 konfigurationerna för både inkommande och utgående (agent) ä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 din Java-webbapp 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.

Anmärkning

Filter förvränger måtten för din app. Om du till exempel vill diagnostisera långsamma svar anger du ett filter för att ignorera snabba svarstider. 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 kan du istället använda Sampling.

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.

Måtttelemetrifilter


           <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 med 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 ut telemetri för alla syntetiska begäranden:


           <Processor type="SyntheticSourceFilter" />

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

Telemetrifilter för spårning

Filtrerar loggspårningar som loggas 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 ut TRACE-nivån.
    • VARNING: Filtrerar bort spår och INFO.
    • FEL: Filtrerar ut 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

Skapa en klass i koden 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 ditt filter 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 baserade 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 en uppsättningsmetod ignoreras det.

samlad: Linux-prestandamått i Application Insights (inaktuell)

Om du vill utforska prestandamått för Linux-system i Application Insights, installera collectd tillsammans med dess Application Insights-plugin. 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 Java-webbtjänsten 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-portalen ö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-portalen med instrumentationsnyckeln markerad.

Installera collectd och pluginet

På dina Linux-serverdatorer:

  1. Installera samlad version 5.4.0 eller senare.
  2. Ladda ned Application Insights collectd-skrivarplugin. Anteckna versionsnumret.
  3. Kopiera plugin-jar-filen 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 så att det inkluderar 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 programmet 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.

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 undantag i brandväggen för utgående data.
  • Aktivera spårning i Application Insights-plugin-programmet. Lägg till den här raden inom <Plugin ApplicationInsightsWriter>:
    • SDKLogger true
  • Öppna en terminal och kör collectd i verbose läge för att se eventuella problem som rapporteras.
    • sudo collectd -f

Kända problem

Insticksprogrammet för Application Insights-skrivning är inte kompatibelt med vissa insticksprogram för läsning. Vissa insticksprogram skickar ibland NaN, men Application Insights-insticksprogrammet förväntar sig ett flyttalstal.

  • Symptom: Loggen collectd visar fel som innehåller "AI: ... SyntaxError: Oväntad token N."
  • Tillfällig lösning: Uteslut data som samlas in av plugin-program för problemskrivningsändamål.

Ö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 lär du dig hur du använder Micrometer med Application Insights för både Spring Boot- och icke-Spring Boot-program.

Använd Spring Boot 1.5x

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

Följ de här stegen:

  1. Uppdatera pom.xml-filen för 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 application.properties-filen eller YML-filen med instrumentationsnyckeln för Application Insights genom att använda 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 till Azure Monitor.

Använd Spring 2.x

Lägg till följande beroenden i filen pom.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 för ditt Spring Boot-program 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 YAML med instrumentationsnyckeln för Application Insights genom att använda 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 Mätvärden
    • Kafka Mätvärden

Inaktivera automatisk insamling av mått:

  • JVM-mått:
    • management.metrics.binders.jvm.enabled=false
  • Logback-statistik
    • 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-mått om biblioteket på classpath:
    • management.metrics.binders.hystrix.enabled=false
  • AspectJ-mått om biblioteket på classpath:
    • spring.aop.enabled=false

Anmärkning

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

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

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

Följ de här stegen:

  1. Lägg till följande beroenden i filen pom.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å en Servlet-klass (genererar ett timermätvärde):

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

Koppla fler metrikinsamlingar

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

SpringBoot/Spring

Skapa en komponent 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 Micrometer.

Appar som inte är Spring-appar

Lägg till följande bindningskod i konfigurationsfilen:

    New GuavaCacheMetrics().bind(registry);

Kärn-API för anpassade händelser och mått

Infoga några rader kod i programmet för att ta reda på vad användarna gör med det eller för att diagnostisera problem. Du kan skicka telemetri från enhets- och skrivbordsappar, webbklienter och webbservrar. Använd Application Insights-kärntelemetri-API:et för att skicka anpassade händelser och mått och dina egna versioner av standardtelemetri. Det här API:et är samma API som standarddatainsamlaren i Application Insights använder.

API-sammanfattning

Kärn-API:et är enhetligt på alla plattformar, förutom några varianter som GetMetric (endast.NET).

Metod Används för
TrackPageView Sidor, skärmar, fönster eller formulär.
TrackEvent Användaråtgärder och andra händelser. Används för att spåra användarbeteende eller för att övervaka prestanda.
TrackMetric Prestandamått som kölängder som inte är relaterade till specifika händelser.
TrackException Logga undantag för diagnos. Spåra var de inträffar i förhållande till andra händelser och granska stackspårningar.
TrackRequest Logga frekvensen och varaktigheten för serverbegäranden för prestandaanalys.
TrackTrace Loggmeddelanden för resursdiagnostik. Du kan också samla in loggar från tredje part.
TrackDependency Logga varaktigheten och frekvensen för anrop till externa komponenter som appen är beroende av.

Du kan koppla egenskaper och mått till de flesta av dessa telemetrianrop.

Förutsättningar

Om du inte har någon referens för Application Insights SDK ännu:

  • Lägg till Application Insights SDK i projektet.

  • I din enhets- eller webbserverkod inkluderar du:

    import com.microsoft.applicationinsights.TelemetryClient;
    

Hämta en TelemetryClient-instans

Hämta en instans av TelemetryClient:

private TelemetryClient telemetry = new TelemetryClient();

TelemetryClient är trådsäker.

Anmärkning

Om du använder Azure Functions v2+ eller Azure WebJobs v3+ läser du Övervaka Azure Functions.

Du kanske vill skapa fler instanser av TelemetryClient för andra moduler i din app. Du kan till exempel ha en TelemetryClient instans i mellanprogramsklassen för att rapportera affärslogikhändelser. Du kan ange egenskaper som UserId och DeviceId för att identifiera datorn. Den här informationen är kopplad till alla händelser som instansen skickar.

telemetry.getContext().getUser().setId("...");
telemetry.getContext().getDevice().setId("...");

TrackEvent

I Application Insights är en anpassad händelse en datapunkt som du kan visa i Metrics Explorer som ett aggregerat antal och i Diagnostiksökning som enskilda förekomster. (Det är inte relaterat till MVC eller andra ramverkshändelser.)

Infoga TrackEvent anrop i koden för att räkna olika händelser. Du kanske till exempel vill spåra hur ofta användare väljer en viss funktion. Eller så kanske du vill veta hur ofta de uppnår vissa mål eller gör specifika typer av misstag.

I en spelapp kan du till exempel skicka ett evenemang när en användare vinner spelet:

telemetry.trackEvent("WinGame");

Anpassade händelser i Log Analytics

Telemetrin är tillgänglig i customEvents tabellen på fliken Application Insights-loggar eller användningsupplevelsen. Händelser kan komma från trackEvent(..) eller insticksprogrammet för Automatisk Click Analytics-inhämtning.

Om samplingen är i drift visar egenskapen itemCount ett värde som är större än 1. Innebär till exempel itemCount==10 att av 10 anrop till trackEvent()överförde samplingsprocessen bara en av dem. Om du vill få ett korrekt antal anpassade händelser använder du kod som customEvents | summarize sum(itemCount).

Anmärkning

itemCount har ett minimivärde på ett; själva posten representerar en inmatning.

TrackMetric

Application Insights kan kartlägga mått som inte är kopplade till vissa händelser. Du kan till exempel övervaka en kölängd med jämna mellanrum. Med mått är de enskilda mätningarna av mindre intresse än variationerna och trenderna, och därför är statistiska diagram användbara.

Om du vill skicka mått till Application Insights kan du använda API:et TrackMetric(..) . Det finns två sätt att skicka ett mått:

  • Enskilt värde. Varje gång du utför en mätning i ditt program skickar du motsvarande värde till Application Insights.

    Anta till exempel att du har ett mått som beskriver antalet objekt i en container. Under en viss tidsperiod placerar du först tre objekt i containern och tar sedan bort två objekt. Därför skulle du ringa TrackMetric två gånger. Först skickar du värdet 3 och skickar sedan värdet -2. Application Insights lagrar båda värdena åt dig.

  • Aggregat. När du arbetar med mått är varje enskild mätning sällan av intresse. I stället är en sammanfattning av vad som hände under en viss tidsperiod viktig. En sådan sammanfattning kallas aggregering.

    I föregående exempel är 1 den aggregerade måttsumman för den tidsperioden och antalet måttvärden är 2. När du använder aggregeringsmetoden anropar TrackMetric du bara en gång per tidsperiod och skickar aggregeringsvärdena. Vi rekommenderar den här metoden eftersom den avsevärt kan minska kostnaderna och prestandakostnaderna genom att skicka färre datapunkter till Application Insights, samtidigt som all relevant information samlas in.

Exempel med ett enda värde

Så här skickar du ett enda måttvärde:

telemetry.trackMetric("queueLength", 42.0);

Anpassade mått i Log Analytics

Telemetrin är tillgänglig i customMetrics tabellen i Application Insights Analytics. Varje rad representerar ett anrop till trackMetric(..) i din app.

  • valueSum: Summan av mätningarna. Om du vill hämta medelvärdet dividerar du med valueCount.
  • valueCount: Antalet mått som aggregerades i det här trackMetric(..) anropet.

Anmärkning

valueCount har ett minimivärde på ett; posten i sig representerar en post.

Sidvisningar

I en enhets- eller webbsidaapp skickas telemetri för sidvisning som standard när varje skärm eller sida läses in. Men du kan ändra standardvärdet för att spåra sidvisningar vid fler eller olika tidpunkter. I en app som till exempel visar flikar eller fönster kanske du vill spåra en sida när användaren öppnar ett nytt fönster.

Användar- och sessionsdata skickas som egenskaper tillsammans med sidvyer, så användar- och sessionsdiagram kommer till liv när det finns telemetri för sidvisning.

Anpassade sidvyer

telemetry.trackPageView("GameReviewPage");

Sidtelemetri i Log Analytics

I Log Analytics visar två tabeller data från webbläsaråtgärder:

  • pageViews: Innehåller data om URL:en och sidrubriken.
  • browserTimings: Innehåller data om klientprestanda som den tid det tar att bearbeta inkommande data.

För att ta reda på hur lång tid det tar för webbläsaren att bearbeta olika sidor:

browserTimings
| summarize avg(networkDuration), avg(processingDuration), avg(totalDuration) by name

Så här upptäcker du populariteten för olika webbläsare:

pageViews
| summarize count() by client_Browser

Koppla sidvisningar till AJAX-anrop genom att ansluta till beroenden:

pageViews
| join (dependencies) on operation_Id

TrackRequest

Server-SDK:t använder TrackRequest för att logga HTTP-begäranden.

Du kan också anropa det själv om du vill simulera begäranden i en kontext där du inte har webbtjänstmodulen igång.

Det rekommenderade sättet att skicka begäranstelemetri är där begäran agerar som en operationskontext.

Åtgärdskontext

Du kan korrelera telemetriobjekt genom att associera dem med åtgärdskontexten. Standardmodulen för spårning av begäranden gör detta för undantag och andra händelser som skickas medan en HTTP-begäran bearbetas. I Sök och Analys kan du enkelt hitta alla händelser som är associerade med begäran med hjälp av dess åtgärds-ID.

Telemetriobjekt som rapporteras inom ett driftsområde blir underordnade objekt till en sådan operation. Åtgärdskontexter kan kapslas.

I Sök används åtgärdskontexten för att skapa listan Relaterade objekt .

Skärmbild som visar listan Relaterade objekt.

Begäranden i Log Analytics

I Application Insights Analytics visas begäranden i requests tabellen.

Om samplingen är i drift visar egenskapen itemCount ett värde som är större än 1. Innebär till exempel itemCount==10 att av 10 anrop till trackRequest()överförde samplingsprocessen bara en av dem. Om du vill få ett korrekt antal begäranden och genomsnittlig varaktighet segmenterade efter begärandenamn använder du kod som:

requests
| summarize count = sum(itemCount), avgduration = avg(duration) by name

TrackException

Skicka undantag till Application Insights:

Rapporterna innehåller stackspårningsinformation.

try {
    ...
} catch (Exception ex) {
    telemetry.trackException(ex);
}

Undantag fångas automatiskt, så du behöver inte alltid anropa TrackException explicit.

Undantag i Log Analytics

I Application Insights Analytics visas undantag i exceptions tabellen.

Om samplingen är i drift visar egenskapen itemCount ett värde som är större än 1. Innebär till exempel itemCount==10 att av 10 anrop till trackException()överförde samplingsprocessen bara en av dem. Om du vill få ett korrekt antal undantag segmenterade efter typ av undantag använder du kod som:

exceptions
| summarize sum(itemCount) by type

Det mesta av den viktiga stackinformationen extraheras redan i separata variabler, men du kan dra isär details strukturen för att få mer. Eftersom den här strukturen är dynamisk bör du omvandla resultatet till den typ du förväntar dig. Till exempel:

exceptions
| extend method2 = tostring(details[0].parsedStack[1].method)

Om du vill associera undantag med deras relaterade begäranden använder du en koppling:

exceptions
| join (requests) on operation_Id

TrackTrace

Använd TrackTrace för att diagnostisera problem genom att skicka en "breadcrumb trail" till Application Insights. Du kan skicka delar av diagnostikdata och inspektera dem i Diagnostiksökning.

Anmärkning

I Java samlar Application Insights Java-agenten automatiskt in och skickar loggar till portalen.

telemetry.trackTrace(message, SeverityLevel.Warning, properties);

Logga en diagnostikhändelse som att ange eller lämna en metod.

Parameter Description
message Diagnostikdata. Kan vara mycket längre än ett namn.
properties Karta över sträng till sträng. Mer data används för att filtrera undantag i portalen. Standardvärdet är tomt.
severityLevel Värden som stöds: SeverityLevel.ts.

Du kan söka efter meddelandeinnehåll, men till skillnad från egenskapsvärden kan du inte filtrera på det.

Storleksgränsen på message är mycket högre än gränsen för egenskaper. En fördel TrackTrace med är att du kan placera relativt långa data i meddelandet. Du kan till exempel koda POST-data där.

Du kan också lägga till en allvarlighetsgrad i meddelandet. Och precis som andra telemetrier kan du lägga till egenskapsvärden som hjälper dig att filtrera eller söka efter olika uppsättningar spårningar. Till exempel:

Map<String, Integer> properties = new HashMap<>();
properties.put("Database", db.ID);
telemetry.trackTrace("Slow Database response", SeverityLevel.Warning, properties);

I Sök kan du sedan enkelt filtrera bort alla meddelanden på en viss allvarlighetsnivå som är relaterade till en viss databas.

Spårningar i Log Analytics

I Application Insights Analytics visas anrop till TrackTrace i traces-tabellen.

Om samplingen är i drift visar egenskapen itemCount ett värde som är större än 1. Innebär till exempel itemCount==10 att av 10 anrop till trackTrace()överförde samplingsprocessen bara en av dem. Om du vill få ett korrekt antal spårningsanrop använder du kod som traces | summarize sum(itemCount).

TrackDependency

Använd anropet TrackDependency för att spåra svarstiderna och framgångsfrekvensen för anrop till en extern kod. Resultaten visas i beroendediagrammen i portalen. Följande kodfragment måste läggas till varhelst ett beroendeanrop görs.

boolean success = false;
Instant startTime = Instant.now();
try {
    success = dependency.call();
}
finally {
    Instant endTime = Instant.now();
    Duration delta = Duration.between(startTime, endTime);
    RemoteDependencyTelemetry dependencyTelemetry = new RemoteDependencyTelemetry("My Dependency", "myCall", delta, success);
    dependencyTelemetry.setTimeStamp(startTime);
    telemetry.trackDependency(dependencyTelemetry);
}

Anmärkning

I Java kan många beroendeanrop spåras automatiskt med hjälp av Application Insights Java-agenten.

Du använder det här anropet om du vill spåra anrop som den automatiserade spårningen inte fångar upp.

Beroenden i Log Analytics

I Application Insights AnalyticstrackDependency visas anrop upp i dependencies tabellen.

Om samplingen är i drift visar egenskapen itemCount ett värde som är större än 1. Innebär till exempel itemCount==10 att av 10 anrop till trackDependency()överförde samplingsprocessen bara en av dem. Om du vill få ett korrekt antal beroenden segmenterade efter målkomponent använder du kod som:

dependencies
| summarize sum(itemCount) by target

Om du vill associera beroenden med deras relaterade begäranden använder du en sammanfogning:

dependencies
| join (requests) on operation_Id

Rensa data

Normalt skickar SDK:t data med fasta intervall, vanligtvis 30 sekunder, eller när bufferten är full, vilket vanligtvis är 500 objekt. I vissa fall kanske du vill tömma bufferten. Ett exempel är om du använder SDK:t i ett program som stängs av.

telemetry.flush();
//Allow some time for flushing before shutting down
Thread.sleep(5000);

Anmärkning

Java SDK töms automatiskt vid programavstängning.

Autentiserade användare

I en webbapp identifieras användare som standard med cookies . En användare kan räknas mer än en gång om de kommer åt din app från en annan dator eller webbläsare, eller om de tar bort cookies.

Om användarna loggar in på din app kan du få ett mer exakt antal genom att ange det autentiserade användar-ID:t i webbläsarkoden. Det är inte nödvändigt att använda användarens faktiska inloggningsnamn. Det behöver bara vara ett ID som är unikt för användaren. Den får inte innehålla mellanslag eller någon av tecknen ,;=|.

Användar-ID:t anges också i en sessionscookie och skickas till servern. Om server-SDK:t är installerat skickas det autentiserade användar-ID:t som en del av kontextegenskaperna för både klient- och servertelemetri. Du kan sedan filtrera och söka på den.

Om appen grupperar användare till konton kan du också skicka en identifierare för kontot. Samma teckenbegränsningar gäller.

I Metrics Explorer kan du skapa ett diagram som räknar användare, autentiserade och användarkonton.

Du kan också söka efter klientdatapunkter med specifika användarnamn och konton.

Filtrera, söka efter och segmentera dina data med hjälp av egenskaper

Du kan koppla egenskaper och mått till dina händelser, mått, sidvisningar, undantag och andra telemetridata.

Egenskaper är strängvärden som du kan använda för att filtrera telemetrin i användningsrapporterna. Om din app till exempel tillhandahåller flera spel kan du koppla namnet på spelet till varje händelse så att du kan se vilka spel som är mer populära.

Det finns en gräns på 8 192 för stränglängden. Om du vill skicka stora datasegment använder du meddelandeparametern TrackTraceför .

Mått är numeriska värden som kan visas grafiskt. Du kanske till exempel vill se om det sker en gradvis ökning av poängen som dina spelare uppnår. Graferna kan segmenteras efter de egenskaper som skickas med händelsen så att du kan få separata eller staplade grafer för olika spel.

Måttvärdena ska vara större än eller lika med 0 för att visas korrekt.

Det finns vissa begränsningar för antalet egenskaper, egenskapsvärden och mått som du kan använda.

Map<String, String> properties = new HashMap<String, String>();
properties.put("game", currentGame.getName());
properties.put("difficulty", currentGame.getDifficulty());

Map<String, Double> metrics = new HashMap<String, Double>();
metrics.put("Score", currentGame.getScore());
metrics.put("Opponents", currentGame.getOpponentCount());

telemetry.trackEvent("WinGame", properties, metrics);

Viktigt!

Kontrollera att du inte loggar personligt identifierbar information i egenskaper.

Varning

Återanvänd inte samma telemetriobjektinstans (event i det här exemplet) för att anropa Track*() flera gånger. Den här metoden kan leda till att telemetri skickas med felaktig konfiguration.

Anpassade mått och egenskaper i Log Analytics

I Log Analytics visas anpassade mått och egenskaper i attributen customMeasurements och customDimensions för varje telemetripost.

Om du till exempel lägger till en egenskap med namnet "game" i din begärans telemetri räknar frågan förekomsterna av olika värden av "game" och visar medelvärdet av det anpassade måttet "score".

requests
| summarize sum(itemCount), avg(todouble(customMeasurements.score)) by tostring(customDimensions.game)

Observera att:

  • När du extraherar ett värde från customDimensions eller customMeasurements JSON har det en dynamisk typ, så du måste omvandla det tostring eller todouble.
  • Om du vill ta hänsyn till möjligheten till sampling ska du inte sum(itemCount)använda count() .

Tidshändelser

Ibland vill du visa hur lång tid det tar att utföra en åtgärd. Du kanske till exempel vill veta hur lång tid det tar för användarna att överväga val i ett spel. Använd måttparametern för att hämta den här informationen.

long startTime = System.currentTimeMillis();

// Perform timed action

long endTime = System.currentTimeMillis();
Map<String, Double> metrics = new HashMap<>();
metrics.put("ProcessingTime", (double)endTime-startTime);

// Setup some properties
Map<String, String> properties = new HashMap<>();
properties.put("signalSource", currentSignalSource.getName());

// Send the event
telemetry.trackEvent("SignalProcessed", properties, metrics);

Standardegenskaper för anpassad telemetri

Om du vill ange standardegenskapsvärden för några av de anpassade händelser som du skriver anger du dem i en TelemetryClient instans. De är kopplade till varje telemetriobjekt som skickas från klienten.

import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryContext;
...

TelemetryClient gameTelemetry = new TelemetryClient();
TelemetryContext context = gameTelemetry.getContext();
context.getProperties().put("Game", currentGame.Name);

gameTelemetry.TrackEvent("WinGame");

Enskilda telemetrianrop kan åsidosätta standardvärdena i sina egenskapsordlistor.

Inaktivera telemetri

För att dynamiskt stoppa och starta insamling och överföring av telemetri:

telemetry.getConfiguration().setTrackingDisabled(true);

Dynamisk anslutningssträng

För att undvika att blanda telemetri från utvecklings-, test- och produktionsmiljöer kan du skapa separata Application Insights-resurser och ändra deras anslutningssträngar, beroende på miljö.

I stället för att hämta anslutningssträngen från konfigurationsfilen kan du ange den i initieringsmetoden för koden:

// Initialize once, e.g., at startup
TelemetryClient telemetry = new TelemetryClient();

// Prefer env var; falls back to hard-coded for illustration
String cs = System.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING");
if (cs != null && !cs.isEmpty()) {
    telemetry.getContext().setConnectionString(cs);
}

TelemetriContext

TelemetryClient har en kontextegenskap som innehåller värden som skickas tillsammans med alla telemetridata. De anges normalt av standardtelemetrimodulerna, men du kan också ange dem själv. Till exempel:

telemetry.Context.Operation.Name = "MyOperationName";

Om du anger något av dessa värden själv kan du överväga att ta bort relevant rad från ApplicationInsights.config så att dina värden och standardvärdena inte blir förvirrade.

  • Komponent: Appen och dess version.
  • Enhet: Data om enheten där appen körs. I webbappar är det den server eller klientenhet som telemetrin skickas från.
  • InstrumentationKey: Application Insights-resursen i Azure där telemetrin visas.
  • Plats: Enhetens geografiska plats.
  • Åtgärd: I webbappar, den aktuella HTTP-begäran. I andra apptyper kan du ange det här värdet för att gruppera händelser tillsammans.
    • ID: Ett genererat värde som korrelerar olika händelser så att du kan hitta relaterade objekt när du inspekterar en händelse i Diagnostiksökning.
    • Namn: En identifierare, vanligtvis URL:en för HTTP-begäran.
    • SyntheticSource: Om den inte är null eller tom har en sträng som anger att källan till begäran har identifierats som en robot eller ett webbtest. Som standard undantas den från beräkningar i Metrics Explorer.
  • Session: Användarens session. ID:t är inställt på ett genererat värde som ändras när användaren inte har varit aktiv på ett tag.
  • Användare: Användarinformation.

Gränser

Det finns vissa gränser för antalet mått och händelser per program, dvs. per instrumentationsnyckel. Gränserna beror på vilken prisplan du väljer.

Resource Standardgräns Maximigräns Noteringar
Totala data per dag 100 GB Kontakta kundsupporten Du kan ange ett tak för att minska data. Om du behöver mer data kan du öka gränsen i portalen, upp till 1 000 GB. För kapaciteter som är större än 1 000 GB skickar du e-post till AIDataCap@microsoft.com.
Strypning 32 000 händelser/sekund Kontakta kundsupporten Gränsen mäts under en minut.
Datakvarhållningsloggar 30 till 730 dagar 730 dagar Den här resursen är för Loggar.
Datakvarhållningsmått 90 dagar 90 dagar Den här resursen är för Metrics Explorer.
Kvarhållning av detaljerade resultat för flerstegstest för tillgänglighet 90 dagar 90 dagar Den här resursen innehåller detaljerade resultat för varje steg.
Maximal storlek på telemetriobjekt 64 KB 64 KB
Maximalt antal telemetriobjekt per batch 64,000 64,000
Namnlängd för egenskaper och mätvärden 150 150 Se även typscheman.
Stränglängd för egenskapsvärde 8,192 8,192 Se även typscheman.
Längd för spårnings- och undantagsmeddelande 32,768 32,768 Se även typscheman.
Tillgänglighetstester räknas per Application Insights-resurs 100 100
Antal tillgänglighetstester per resursgrupp 800 800 Se Azure Resource Manager
Maximalt antal omdirigeringar per tillgänglighetstest 10 10
Tillgänglighetstester med lägsta testfrekvens 300 sekunder Anpassade testfrekvenser eller frekvenser på mindre än 5 minuter kräver anpassade TrackAvailability-implementeringar .
.NET Profiler och Snapshot Debugger datalagring Två veckor Kontakta supporten. Maximal kvarhållningsgräns är sex månader.
.NET Profiler-data skickas per dag Ingen begränsning Ingen gräns.
Ögonblicksbildsfelsökardata som skickas varje dag 30 ögonblicksbilder per dag per övervakad app Ingen gräns. Antalet ögonblicksbilder som samlas in per program kan ändras via konfigurationen.

Mer information om priser och kvoter finns i Application Insights-fakturering.

Om du vill undvika att nå datahastighetsgränsen använder du sampling.

Information om hur länge data sparas finns i Datakvarhållning och sekretess.

Nästa steg