Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Ett Azure-konto med en aktiv prenumeration. Du kan skapa ett konto kostnadsfritt.
- Ett fungerande Java-program.
Hämta en Application Insights-instrumentationsnyckel
- Logga in på Azure-portalen. 
- Skapa en Application Insights-resurs i Azure-portalen. Ange programtypen till Java-webbapp. 
- Hitta instrumentationsnyckeln för den nya resursen. Du måste klistra in den här nyckeln i kodprojektet inom kort. 
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-autoger 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-webger 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-coreger 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.
Läs mer om mätvärden.
Klicka dig igenom ett diagram om du vill se mer detaljerade aggregerade mått.
Instansdata
Klicka dig igenom en specifik typ av begäran för att se enskilda instanser.
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.
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.proxyHostoch- http.proxyPort.
- Installera på Windows-servrar: - Microsoft Visual C++ Redistributable - Den här komponenten aktiverar prestandaräknare. 
 
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.
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 formatetAttribute.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. OmcategoryNameärProcessoch 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:
- Lägg till telemetri på dina webbsidor för att övervaka sidvisningar och användarmått.
- Konfigurera webbtester för att se till att programmet förblir aktivt och dynamiskt.
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:
- Spåra anpassade händelser och mått för att lära dig vad användarna gör med ditt program.
- Sök efter händelser och loggar för att diagnostisera problem.
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.+'
Använda jar-länken
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.
Ö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,OkHttpochjava.net.HttpURLConnectionregistreras.
- 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.
 
- 
              Utgående HTTP-anrop: Anrop som görs via 
- 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.
 
- 
              Spring: Baserat på 
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
- 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. 
- 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>"
- 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:
- Välj Inställningar>Programinställningar. 
- 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. 
- 
              Nyckel: 
- 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:
- Inga data? Ange brandväggsundantag.
- Felsöka Java.
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 - FromSeverityLevelvä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.
Installera collectd och pluginet
På dina Linux-serverdatorer:
- Installera samlad version 5.4.0 eller senare.
- Ladda ned Application Insights collectd-skrivarplugin. Anteckna versionsnumret.
- Kopiera plugin-jar-filen till /usr/share/collectd/java.
- Redigera /etc/collectd/collectd.conf:- Kontrollera att Java-plugin-programmet är aktiverat. 
- Uppdatera JVMArg för - java.class.pathså 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 - diskplugin-programmet.- Exclude disk:read,write- Undanta källorna med namnet - readoch- writefrån- diskplugin-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 collectdi 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 collectdvisar 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.
Använda Micrometer med Application Insights Java SDK (rekommenderas inte)
Ö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 :
- Application Insights spring-boot-starter 2.5.0 eller senare.
- Micrometer Azure Registry 1.1.0 eller senare.
- Micrometer Spring Legacy 1.1.0 eller senare. Den backportar autokonfigurationskoden i Spring-ramverket.
- ApplicationInsights-resurs.
Följ de här stegen:
- 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>
- 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>
- 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:
- 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>
- 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>
- 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,HazelcastCacheochJCache)
- DataBaseTableMetrics
- HibernateMetrics
- JettyMetrics
- 
              OkHttp3Mätvärden
- 
              KafkaMä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 :
- Application Insights Web Auto 2.5.0 eller senare
- Micrometer Azure Registry 1.1.0 eller senare
- Application Insights-resurs
Följ de här stegen:
- 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>
- 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. 
- 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"); } }
- 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 - TrackMetrictvå gånger. Först skickar du värdet- 3och 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 - 1den aggregerade måttsumman för den tidsperioden och antalet måttvärden är- 2. När du använder aggregeringsmetoden anropar- TrackMetricdu 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 medvalueCount.
- 
              valueCount: Antalet mått som aggregerades i det härtrackMetric(..)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 .
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:
- Att räkna dem, som en indikation på frekvensen för ett problem.
- För att undersöka enskilda förekomster.
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 customDimensionsellercustomMeasurementsJSON har det en dynamisk typ, så du måste omvandla dettostringellertodouble.
- Om du vill ta hänsyn till möjligheten till sampling ska du inte sum(itemCount)användacount().
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
- Lägg till övervakning på dina webbsidor för att övervaka sidinläsningstider, AJAX-anrop och webbläsarfel.
- Skriv anpassad telemetri för att spåra användningen i webbläsaren eller på servern.
- Använd Log Analytics för kraftfulla frågor via telemetri från din app.
- Använd Diagnostiksökning.
- Överväg att använda sampling som ett alternativ till filtrering som inte förvränger dina mått.
- Mer information om Mikrometer finns i dokumentationen om Mikrometer.
- Mer information om Spring on Azure finns i dokumentationen om Spring on Azure.
- Mer information finns i Azure för Java-utvecklare.
 
              
               
              
               
              
               
              
               
              
               
              
               
              
              