Application Insights för Java 2.x
Varning
Den här artikeln gäller För Application Insights Java 2.x, som inte längre rekommenderas.
Dokumentation för den senaste versionen finns i Application Insights Java 3.x.
I den här artikeln får du lära dig hur du använder Application Insights Java 2.x. Den här artikeln visar hur du:
- Kom igång och lär dig hur du instrumenterar begäranden, spårar beroenden, samlar in prestandaräknare, diagnostiserar prestandaproblem och undantag och skriver kod för att spåra vad användarna gör med din app.
- Skicka spårningsloggar till Application Insights och utforska dem med hjälp av Application Insights-portalen.
- Övervaka beroenden, fångade undantag och körningstider för metoder i Java-webbappar.
- Filtrera telemetri i Java-webbappen.
- Utforska prestandamått för Linux-system i Application Insights med hjälp
collectd
av . - Mät mått för JVM-baserad programkod (Java Virtual Machine). Exportera data till dina favoritövervakningssystem med hjälp av mikrometerprogramövervakning.
Anteckning
Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergång till anslutningssträngar för att dra nytta av nya funktioner.
Komma igång med Application Insights i ett Java-webbprojekt
I det här avsnittet använder du Application Insights SDK för att instrumentera begäranden, spåra beroenden, samla in prestandaräknare, diagnostisera prestandaproblem och undantag och skriva kod för att spåra vad användarna gör med din app.
Application Insights är en utökningsbar analystjänst för webbutvecklare som hjälper dig att förstå prestanda och användningen av ditt liveprogram. Application Insights har stöd för Java-appar som körs på Linux, Unix eller Windows.
Förutsättningar
Du behöver:
- Ett Azure-konto med en aktiv prenumeration. Du kan skapa ett konto utan kostnad.
- Ett fungerande Java-program.
Hämta en Application Insights-instrumenteringsnyckel
Logga in på Azure-portalen.
Skapa en Application Insights-resurs på Azure Portal. Ange programtypen till Java-webbapp.
Leta upp instrumenteringsnyckeln för den nya resursen. Du kommer att behöva klistra in den här nyckeln i projektkoden inom kort.
Lägga till Application Insights SDK för Java till ditt projekt
Välj projekttyp.
Om projektet redan har konfigurerats för att använda Maven för kompilering sammanfogar du följande kod till dinpom.xml-fil . Uppdatera sedan projektberoendena för att få binärfilerna.
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web-auto</artifactId>
<!-- or applicationinsights-web for manual web filter registration -->
<!-- or applicationinsights-core for bare API -->
<version>2.6.4</version>
</dependency>
</dependencies>
Vanliga frågor och svar
Vad är relationen mellan komponenterna
-web-auto
,-web
och-core
?-
applicationinsights-web-auto
ger dig mått som spårar antalet HTTP servlet-begäranden och svarstider genom att automatiskt registrera Application Insights servlet-filtret vid körning. -
applicationinsights-web
ger dig också mått som spårar antal HTTP servlet-begäranden och svarstider. Men manuell registrering av Application Insights servlet-filtret i ditt program krävs. -
applicationinsights-core
ger dig det tomma API:et, till exempel om ditt program inte är servlet-baserat.
-
Hur uppdaterar jag SDK till den senaste versionen?
- Från och med november 2020 rekommenderar vi att du använder Application Insights Java 3.x för att övervaka Java-program. Mer information om hur du kommer igång finns i Application Insights Java 3.x.
Lägga till en ApplicationInsights.xml-fil
Lägg till ApplicationInsights.xml i resursmappen i projektet eller kontrollera att den har lagts till i projektets distributionsklasssökväg. Kopiera följande XML-kod till den.
Ersätt instrumentationsnyckeln med den som du fick från Azure Portal.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!-- The key from the portal: -->
<InstrumentationKey>** Your instrumentation key **</InstrumentationKey>
<!-- HTTP request component (not required for bare API) -->
<TelemetryModules>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
</TelemetryModules>
<!-- Events correlation (not required for bare API) -->
<!-- These initializers add context data to each event -->
<TelemetryInitializers>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
</TelemetryInitializers>
</ApplicationInsights>
Om du vill kan konfigurationsfilen finnas på valfri plats som är tillgänglig för ditt program. Systemegenskapen -Dapplicationinsights.configurationDirectory
anger den katalog som innehåller ApplicationInsights.xml. Till exempel konfigureras en konfigurationsfil som finns på E:\myconfigs\appinsights\ApplicationInsights.xml med egenskapen -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"
.
- Instrumenteringsnyckeln skickas tillsammans med alla element i telemetrin och uppmanar Application Insights att visa den i din resurs.
- Komponenten HTTP-begäran är valfri. Den skickar automatiskt telemetri om förfrågningar och svarstider till portalen.
- Händelsekorrelation är ett tillägg till komponenten HTTP-begäran. Den tilldelar en identifierare till varje begäran som tas emot av servern. Den lägger sedan till den här identifieraren som en egenskap för varje objekt i telemetrin som egenskapen
Operation.Id
. Det gör att du kan korrelera telemetrin som är associerad med varje begäran genom att ange ett filter i Diagnostiksökning.
Olika sätt att konfigurera instrumenteringsnyckeln på
Application Insights SDK:n söker efter nyckeln i följande ordning:
- Systemegenskap: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Miljövariabel: APPINSIGHTS_INSTRUMENTATIONKEY
- Konfigurationsfil: ApplicationInsights.xml
Du kan också ange den i koden:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Lägg till agent
Installera Java-agenten för att samla in utgående HTTP-anrop, JDBC-frågor, programloggning och bättre namngivning av åtgärder.
Köra ditt program
Kör den antingen i felsökningsläge på utvecklingsdatorn eller publicera den på servern.
Visa telemetrin i Application Insights
Gå tillbaka till Application Insights-resursen i Azure Portal.
HTTP-begärandedata visas i översiktsfönstret. Om den inte finns där väntar du några sekunder och väljer sedan Uppdatera.
Läs mer om mått.
Klicka dig vidare i diagrammen om du vill visa mer detaljerade aggregerade mätvärden.
Instansdata
Klicka dig vidare inom en specifik begärandetyp om du vill visa 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 din app på servern
Publicera appen på servern, låt användarna använda den och se hur telemetrin visas i portalen.
Kontrollera att din brandvägg tillåter programmet att skicka telemetri till följande portar:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Om utgående trafik måste dirigeras via en brandvägg definierar du systemegenskaperna
http.proxyHost
ochhttp.proxyPort
.Installera följande på Windows-servrar:
Microsoft Visual C++ Redistributable
Den här komponenten aktiverar prestandaräknare.
konfiguration av Azure App Service, Azure Kubernetes Service, virtuella datorer
Den bästa och enklaste metoden för att övervaka dina program som körs på azure-resursproviders är att använda Application Insights Java 3.x.
Fel relaterade till begäranden och undantag
Ohanterade undantag och begärandefel samlas automatiskt in av Application Insights-webbfiltret.
Om du vill samla in data om andra undantag kan du infoga anrop till trackException() i koden.
Övervaka metodanrop och externa beroenden
Installera Java-agenten för att logga angivna interna metoder och anrop som görs via JDBC, med tidsdata och för automatisk namngivning av åtgärder.
W3C-distribuerad spårning
Application Insights Java SDK stöder nu W3C-distribuerad spårning.
Den inkommande SDK-konfigurationen förklaras ytterligare i Telemetrikorrelation i Application Insights.
Utgående SDK-konfiguration definieras i filenAI-Agent.xml .
Prestandaräknare
Välj Undersök>mått för att se ett antal prestandaräknare.
Anpassa samlingen med prestandaräknare
Om du vill inaktivera insamling av standarduppsättningen med prestandaräknare lägger du till följande kod under rotnoden i ApplicationInsights.xml-filen :
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Samla in fler prestandaräknare
Du kan ange fler prestandaräknare som ska samlas in.
JMX-räknare (exponeras av den virtuella Java-datorn)
<PerformanceCounters>
<Jmx>
<Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
<Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
</Jmx>
</PerformanceCounters>
-
displayName
: Namnet som visas i Application Insights-portalen. -
objectName
: JMX-objektnamnet. -
attribute
: Attributet för JMX-objektnamnet som ska hämtas. -
type
(valfritt): Typen av JMX-objekts attribut:- Standard: En enkel typ, till exempel int eller long.
-
composite
: Prestandaräknardata har formatetAttribute.Data
. -
tabular
: Prestandaräknardata är i formatet för en tabellrad.
Windows-prestandaräknare
Varje Windows-prestandaräknare är medlem i en kategori (på samma sätt som ett fält är medlem i en klass). Kategorier kan antingen vara globala eller ha numrerade eller namngivna instanser.
<PerformanceCounters>
<Windows>
<Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
<Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
</Windows>
</PerformanceCounters>
-
displayName
: Namnet som visas i Application Insights-portalen. -
categoryName
: Prestandaräknarkategorin (prestandaobjekt) som den här prestandaräknaren är associerad med. -
counterName
: Namnet på prestandaräknaren. -
instanceName
: Namnet på prestandaräknarkategoriinstansen eller en tom sträng (""), om kategorin innehåller en enda instans. OmcategoryName
ärProcess
och prestandaräknaren som du vill samla in kommer från den aktuella JVM-processen där appen körs anger du"__SELF__"
.
Unix-prestandaräknare
Installera som samlas in med Application Insights-plugin-programmet för att få en mängd olika system- och nätverksdata.
Samla in användar- och sesionsdata
Nu skickar du telemetri från webbservern. Om du vill få en fullständig 360-graders vy över ditt program kan du lägga till mer övervakning:
- Lägg till telemetri till webbsidor om du vill övervaka sidvisningar och användarmått.
- Konfigurera webbtester för att se till att ditt program är aktivt och effektivt.
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 och ta reda på vad användare 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 tjänsten är tillgänglig och att den svarar.
Läs mer om hur du konfigurerar webbtester för tillgänglighet.
Felsökning
Se den dedikerade felsökningsartikeln.
Testa anslutningen mellan programvärden och inmatningstjänsten
Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop till våra inmatningsslutpunkter. Du kan testa anslutningen från webbservern eller programvärddatorn till inmatningstjänstens slutpunkter med hjälp av råa REST-klienter från PowerShell- eller curl-kommandon. Se Felsöka programtelemetri som saknas i Azure Monitor Application Insights.
Utforska Java-spårningsloggar i Application Insights
Om du använder Logback eller Log4J (v1.2 eller v2.0) för spårning kan du få spårningsloggarna automatiskt skickade till Application Insights där du kan utforska och söka efter dem.
Tips
Du behöver bara ange Application Insights-instrumenteringsnyckeln en gång för ditt program. Om du använder ett ramverk som Java Spring kanske du redan har registrerat nyckeln någon annanstans i appens konfiguration.
Använda Application Insights Java-agenten
Som standard samlar Application Insights Java-agenten automatiskt in loggning som utförs på nivån WARN
och högre.
Du kan ändra tröskelvärdet för loggning som samlas in med hjälp av filenAI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Du kan inaktivera Loggningsinsamling för Java-agenten med hjälp av filenAI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternativ
I stället för att använda Java-agenten kan du följa dessa instruktioner.
Installera Java SDK
Följ anvisningarna för att installera Application Insights SDK för Java, om du inte redan har gjort det.
Lägga till loggningsbibliotek i projektet
Välj lämplig metod för ditt projekt.
Maven
Om projektet redan har konfigurerats för att använda Maven för kompilering sammanfogar du något av följande kodfragment i pom.xml filen. Uppdatera sedan projektberoendena för att få binärfilerna.
Tillbakaloggning
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v2.0
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v1.2
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j1_2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Gradle
Om projektet redan har konfigurerats för att använda Gradle för kompilering lägger du till en av följande rader dependencies
i gruppen i filen build.gradle . Uppdatera sedan projektberoendena för att få binärfilerna.
Tillbakaloggning
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'
Log4J v2.0
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'
Log4J v1.2
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'
Använd 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 rätt tillägg. Lägg till den nedladdade tilläggsburken i projektet.
Logger | Ladda ned | Bibliotek |
---|---|---|
Tillbakaloggning | Logback-tillägg Jar | applicationinsights-logging-logback |
Log4J v2.0 | Log4J v2 tilläggs-Jar | applicationinsights-logging-log4j2 |
Log4j v1.2 | Log4J v1.2 tilläggs-Jar | applicationinsights-logging-log4j1_2 |
Lägga till tillägget i ditt loggningsramverk
Börja hämta spårningar genom att sammanfoga det relevanta kodfragmentet till Logback- eller Log4J-konfigurationsfilen.
Tillbakaloggning
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
<instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
Log4J v2.0
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
<Appenders>
<ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="aiAppender"/>
</Root>
</Loggers>
</Configuration>
Log4J v1.2
<appender name="aiAppender"
class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
<param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
</appender>
<root>
<priority value ="trace" />
<appender-ref ref="aiAppender" />
</root>
Application Insights-appavsändare kan refereras av alla konfigurerade loggare och inte nödvändigtvis av rotloggaren, som du ser i föregående kodexempel.
Utforska dina spårningar i Application Insights-portalen
Nu när du har konfigurerat projektet för att skicka spårningar till Application Insights kan du visa och söka i dessa spårningar i Application Insights-portalen i fönstret Sök .
Undantag som skickas via loggare visas i portalen som undantagstelemetri .
Övervaka beroenden, fångade undantag och körningstider för metoder i Java-webbappar
Om du har instrumenterat din Java-webbapp med Application Insights SDK kan du använda Java-agenten för att få djupare insikter, utan några kodändringar:
Beroenden: Data om anrop som ditt program gör till andra komponenter, inklusive:
-
Utgående HTTP-anrop: Anrop som görs via
Apache HttpClient
,OkHttp
ochjava.net.HttpURLConnection
samlas in. - Redis-samtal: Samtal som görs via Jedis-klienten fångas.
- JDBC-frågor: För MySQL och PostgreSQL rapporterar agenten frågeplanen om anropet tar längre tid än 10 sekunder.
-
Utgående HTTP-anrop: Anrop som görs via
Programloggning: Avbilda och korrelera dina programloggar med HTTP-begäranden och annan telemetri:
- Log4j 1.2
- Log4j2
- Tillbakaloggning
Namn på bättre åtgärder: Används för aggregering av begäranden i portalen.
-
Spring: Baserat på
@RequestMapping
. -
JAX-RS: Baserat på
@Path
.
-
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 programserverns startskript och lägg till följande JVM-argument:
-javaagent:<full path to the agent JAR file>
Till exempel i Tomcat på en Linux-dator:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"
Starta om programservern.
Konfigurera agenten
Skapa en fil med namnet AI-Agent.xml och placera den i samma mapp som agent jar-filen.
Ange innehållet i XML-filen. Redigera följande exempel för att inkludera eller utelämna de funktioner som du vill använda.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn enabled="true">
<!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
<Logging enabled="true" />
<!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
and java.net.HttpURLConnection, default is true -->
<HTTP enabled="true" />
<!-- capture JDBC queries, default is true -->
<JDBC enabled="true" />
<!-- capture Redis calls, default is true -->
<Jedis enabled="true" />
<!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
default is 10000 milliseconds -->
<MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Mer konfiguration (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Följ dessa steg för Azure App Service:
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 är i rätt App Service katalog går du tillFelsökningskonsolen för utvecklingsverktyg>avancerade verktyg> 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.
Anteckning
AI-Agent.xml och agent jar-filen ska finnas i samma mapp. De placeras ofta tillsammans i mappen /resources i projektet.
Aktivera W3C-distribuerad spårning
Lägg till följande kodfragment i AI-Agent.xml:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Anteckning
Bakåtkompatibilitetsläget är aktiverat som standard. Parametern enableW3CBackCompat
är valfri och bör endast användas när du vill inaktivera den.
Helst skulle detta vara fallet när alla dina tjänster har uppdaterats till nyare versioner av SDK:er som stöder W3C-protokollet. Vi rekommenderar att du flyttar till nyare versioner av SDK:er med W3C-stöd så snart som möjligt.
Kontrollera att både inkommande och utgående (agent)-konfigurationer är exakt desamma.
Visa data
I Application Insights-resursen visas aggregerade fjärrberoenden och körningstider för metoder under panelen Prestanda.
Om du vill söka efter enskilda instanser av beroende-, undantags- och metodrapporter öppnar du Sök.
Läs mer om hur du diagnostiserar beroendeproblem.
Frågor eller problem?
Använd följande resurser:
- Ser du inga data? Ange brandväggsfel.
- Felsöka Java.
Filtrera telemetri i din Java-webbapp
Filter är ett sätt att välja den telemetri som Java-webbappen skickar till Application Insights. Det finns några färdiga filter som du kan använda. Du kan också skriva egna anpassade filter.
De färdiga filtren omfattar:
- Spåra allvarlighetsgrad.
- Specifika URL:er, nyckelord eller svarskoder.
- Snabba svar. Med andra ord begäranden som appen svarade på snabbt.
- Specifika händelsenamn.
Anteckning
Filter förvränger måtten för din app. Du kan till exempel välja att du ställer in ett filter för att ignorera snabba svarstider för att diagnostisera långsamma svar. Men du måste vara medveten om att de genomsnittliga svarstiderna som rapporteras av Application Insights sedan blir långsammare än den sanna hastigheten. Dessutom är antalet begäranden mindre än det verkliga antalet.
Om detta är ett problem använder du Sampling i stället.
Ange filter
I ApplicationInsights.xmllägger du till ett TelemetryProcessors
avsnitt som det här exemplet:
<ApplicationInsights>
<TelemetryProcessors>
<BuiltInProcessors>
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="100"/>
<Add name="NotNeededResponseCodes" value="200-400"/>
</Processor>
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="100"/>
<Add name="NotNeededNames" value="home,index"/>
<Add name="NotNeededUrls" value=".jpg,.css"/>
</Processor>
<Processor type="TelemetryEventFilter">
<!-- Names of events we don't want to see -->
<Add name="NotNeededNames" value="Start,Stop,Pause"/>
</Processor>
<!-- Exclude telemetry from availability tests and bots -->
<Processor type="SyntheticSourceFilter">
<!-- Optional: specify which synthetic sources,
comma-separated
- default is all synthetics -->
<Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
</Processor>
</BuiltInProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.MyFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Granska den fullständiga uppsättningen inbyggda processorer.
Inbyggda filter
I det här avsnittet beskrivs de inbyggda filter som är tillgängliga.
Telemetrifilter för mått
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded
: Kommaavgränsad lista över anpassade måttnamn
Telemetrifilter för sidvisning
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS
: Varaktighet avser den tid det tar att läsa in sidan. Om den här parametern anges rapporteras inte sidor som har lästs in snabbare än den här gången. -
NotNeededNames
: Kommaavgränsad lista över sidnamn. -
NotNeededUrls
: Kommaavgränsad lista över URL-fragment. Filtrerar"home"
till exempel bort alla sidor som har "hem" i URL:en.
Begär telemetrifilter
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Filter för syntetisk källa
Filtrerar bort all telemetri som har värden i egenskapen SyntheticSource
. Begäranden från robotar, spindlar och tillgänglighetstester ingår.
Filtrerar bort telemetri för alla syntetiska begäranden:
<Processor type="SyntheticSourceFilter" />
Filtrerar bort telemetri för specifika syntetiska källor:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded
: Kommaavgränsad lista över syntetiska källnamn
Filter för telemetrihändelse
Filtrerar anpassade händelser som loggats med TrackEvent():
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames
: Kommaavgränsad lista över händelsenamn
Spåra telemetrifilter
Filtrerar loggspårningar som loggats med hjälp av TrackTrace() eller en loggningsramverksinsamlare:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
Giltiga
FromSeverityLevel
värden är:- AV: Filtrerar bort alla spårningar.
- TRACE: Ingen filtrering. Är lika med TRACE-nivå.
- INFO: Filtrerar bort SPÅRNINGsnivå.
- VARNA: Filtrerar bort SPÅRNING och INFO.
- FEL: Filtrerar bort WARN, INFO och TRACE.
- KRITISK: Filtrerar ut allt utom KRITISKt.
Anpassade filter
I följande avsnitt visas stegen för att skapa egna anpassade filter.
Koda filtret
I koden skapar du en klass som implementerar TelemetryProcessor
:
package com.fabrikam.MyFilter;
import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
import com.microsoft.applicationinsights.telemetry.Telemetry;
public class SuccessFilter implements TelemetryProcessor {
/* Any parameters that are required to support the filter.*/
private final String successful;
/* Initializers for the parameters, named "setParameterName" */
public void setNotNeeded(String successful)
{
this.successful = successful;
}
/* This method is called for each item of telemetry to be sent.
Return false to discard it.
Return true to allow other processors to inspect it. */
@Override
public boolean process(Telemetry telemetry) {
if (telemetry == null) { return true; }
if (telemetry instanceof RequestTelemetry)
{
RequestTelemetry requestTelemetry = (RequestTelemetry) telemetry;
return request.getSuccess() == successful;
}
return true;
}
}
Anropa filtret i konfigurationsfilen
Nu i ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Anropa filtret (Java Spring)
För program som baseras på Spring-ramverket måste anpassade telemetriprocessorer registreras i din huvudprogramklass som en böna. De kommer sedan att kopplas automatiskt när programmet startas.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
Du skapar egna filterparametrar i application.properties
. Sedan använder du Spring Boots externaliserade konfigurationsramverk för att skicka dessa parametrar till ditt anpassade filter.
Felsökning
Det här avsnittet innehåller ett felsökningstips.
Mitt filter fungerar inte
Kontrollera att du har angett giltiga parametervärden. Varaktigheter bör till exempel vara heltal. Ogiltiga värden gör att filtret ignoreras. Om ditt anpassade filter genererar ett undantag från en konstruktor eller uppsättningsmetod ignoreras det.
samlad: Prestandamått för Linux i Application Insights (inaktuell)
Om du vill utforska prestandamått för Linux-system i Application Insights installerar du det som samlas in tillsammans med plugin-programmet Application Insights. Den här lösningen med öppen källkod samlar in olika system- och nätverksstatistik.
Vanligtvis använder collectd
du om du redan har instrumenterat din Java-webbtjänst med Application Insights. Det ger dig mer data som hjälper dig att förbättra appens prestanda eller diagnostisera problem.
Hämta instrumentationsnyckeln
I Azure Portal öppnar du Application Insights-resursen där du vill att data ska visas. Eller så kan du skapa en ny resurs.
Ta en kopia av instrumenteringsnyckeln som identifierar resursen.
Installera collectd och plugin-programmet
På dina Linux-serverdatorer:
- Installera samlad version 5.4.0 eller senare.
- Ladda ned plugin-programmet application insights collectd writer. Observera versionsnumret.
- Kopiera plugin-programmets jar-fil till
/usr/share/collectd/java
. - Redigera
/etc/collectd/collectd.conf
:Kontrollera att Java-plugin-programmet är aktiverat.
Uppdatera JVMArg för
java.class.path
att inkludera följande jar. Uppdatera versionsnumret så att det matchar det du laddade ned:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Lägg till det här kodfragmentet med hjälp av instrumentationsnyckeln från resursen:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>
Här är en del av en exempelkonfigurationsfil:
... # collectd plugins LoadPlugin cpu LoadPlugin disk LoadPlugin load ... # Enable Java Plugin LoadPlugin "java" # Configure Java Plugin <Plugin "java"> JVMArg "-verbose:jni" JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar" # Enabling Application Insights plugin LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" # Configuring Application Insights plugin <Plugin ApplicationInsightsWriter> InstrumentationKey "12345678-1234-1234-1234-123456781234" </Plugin> # Other plugin configurations ... ... </Plugin> ...
Konfigurera andra insamlade plugin-program som kan samla in olika data från olika källor.
Starta om collectd
enligt dess handbok.
Visa data i Application Insights
Öppna Mått i Application Insights-resursen och lägg till diagram. Välj de mått som du vill se i kategorin Anpassad .
Som standard aggregeras måtten över alla värddatorer som måtten samlades in från. Om du vill visa måtten per värd går du till fönstret Diagraminformation , aktiverar Gruppering och väljer sedan att gruppera efter CollectD-Host.
Exkludera uppladdning av specifik statistik
Som standard skickar Application Insights-plugin-programmet alla data som samlas in av alla aktiverade collectd read
plugin-program.
Så här exkluderar du data från specifika plugin-program eller datakällor:
Redigera konfigurationsfilen.
I
<Plugin ApplicationInsightsWriter>
lägger du till direktivrader som de i följande tabell:Direktiv Effekt Exclude disk
Undanta alla data som samlas in av disk
plugin-programmet.Exclude disk:read,write
Undanta källorna med namnet read
ochwrite
fråndisk
plugin-programmet.
Avgränsa direktiv med en ny rad.
Har du problem?
Det här avsnittet innehåller felsökningstips.
Jag ser inte data i portalen
Prova följande alternativ:
- Öppna Sök för att se om råhändelserna har anlänt. Ibland tar det längre tid att visas i Metrics Explorer.
- Du kan behöva ange brandväggsfel för utgående data.
- Aktivera spårning i Application Insights-plugin-programmet. Lägg till den här raden i
<Plugin ApplicationInsightsWriter>
:SDKLogger true
- Öppna en terminal och börja
collectd
i utförligt läge för att se eventuella problem som rapporteras:sudo collectd -f
Kända problem
Application Insights-plugin-programmet är inte kompatibelt med vissa läs-plugin-program. Vissa plugin-program skickar NaN
ibland , men Application Insights-plugin-programmet förväntar sig ett flyttalsnummer.
-
Symptom: Loggen
collectd
visar fel som inkluderar "AI: ... SyntaxError: Oväntad token N." - Lösning: Undanta data som samlas in av problemskrivnings-plugin-program.
Använda Mikrometer 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 får du lära dig hur du använder Micrometer med Application Insights för både Spring Boot- och icke-Spring Boot-program.
Använda Spring Boot 1.5x
Lägg till följande beroenden i filenpom.xml eller build.gradle :
- 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 i Spring Boot-programmet och lägg till följande beroenden i den:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-spring-legacy</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency>
Uppdatera filen application.properties eller YML med Instrumentationsnyckeln för Application Insights med hjälp av följande egenskap:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Skapa ditt program och kör det.
Föregående steg bör få igång dig med föraggregerade mått som samlas in automatiskt i Azure Monitor.
Använda Spring 2.x
Lägg till följande beroenden i filenpom.xml eller build.gradle :
- Application Insights Spring-boot-starter 2.1.2 eller senare
- Azure-spring-boot-metrics-starters 2.0.7 eller senare
- Application Insights-resurs
Följ de här stegen:
Uppdatera pom.xml-filen i Spring Boot-programmet och lägg till följande beroende i det:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>
Uppdatera filen application.properties eller YML med Instrumentationsnyckeln för Application Insights med hjälp av följande egenskap:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
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
,HazelcastCache
ochJCache
) DataBaseTableMetrics
HibernateMetrics
JettyMetrics
-
OkHttp3
Metrics -
Kafka
Metrics
-
Inaktivera automatisk insamling av mått:
- JVM-mått:
management.metrics.binders.jvm.enabled=false
- Tillbakaloggningsmått:
management.metrics.binders.logback.enabled=false
- Drifttidsmått:
management.metrics.binders.uptime.enabled=false
- Processormått:
management.metrics.binders.processor.enabled=false
- FileDescriptorMetrics:
management.metrics.binders.files.enabled=false
- Hystrix Metrics if library on
classpath
:management.metrics.binders.hystrix.enabled=false
- AspectJ-mått om biblioteket på
classpath
:spring.aop.enabled=false
Anteckning
Ange föregående egenskaper i filen application.properties eller application.yml i Spring Boot-programmet.
Använda Mikrometer med webbprogram som inte är Spring Boot
Lägg till följande beroenden i filenpom.xml eller build.gradle :
- 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 filenpom.xml eller build.gradle :
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-web-auto</artifactId> <version>2.5.0</version> </dependency>
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å Servlet-klass (genererar ett timermått):
@WebServlet("/hello") public class TimedDemo extends HttpServlet { private static final long serialVersionUID = -4751096228274971485L; @Override @Timed(value = "hello.world") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello World!"); MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry"); //create new Timer metric Timer sampleTimer = registry.timer("timer"); Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1); infiniteStream.limit(10).forEach(integer -> { try { Thread.sleep(1000); sampleTimer.record(integer, TimeUnit.MILLISECONDS); } catch (Exception e) {} }); } @Override public void init() throws ServletException { System.out.println("Servlet " + this.getServletName() + " has started"); } @Override public void destroy() { System.out.println("Servlet " + this.getServletName() + " has stopped"); } }
Exempelkonfigurationsklass:
@WebListener public class MeterRegistryConfiguration implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // Create AzureMonitorMeterRegistry private final AzureMonitorConfig config = new AzureMonitorConfig() { @Override public String get(String key) { return null; } @Override public Duration step() { return Duration.ofSeconds(60);} @Override public boolean enabled() { return false; } }; MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config); //set the config to be used elsewhere servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } }
Mer information om mått finns i dokumentationen om mikrometer.
Annan exempelkod om hur du skapar olika typer av mått finns i den officiella GitHub-lagringsplatsen för mikrometer.
Binda fler måttsamling
Följande avsnitt visar hur du samlar in fler mått.
SpringBoot/Spring
Skapa en böna för respektive måttkategori. Anta till exempel att du behöver Guava Cache-mått:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Flera mått är inte aktiverade som standard men kan bindas på föregående sätt. En fullständig lista finns i GitHub-lagringsplatsen För mikrometer.
Appar som inte är Spring-appar
Lägg till följande bindningskod i konfigurationsfilen:
New GuavaCacheMetrics().bind(registry);
Nästa steg
- Lägg till övervakning på dina webbsidor för att övervaka sidinläsningstider, AJAX-anrop och webbläsarfel.
- Skriv anpassad telemetri 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 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.