Application Insights voor Java 2.x
Waarschuwing
Dit artikel is van toepassing op Application Insights Java 2.x, wat niet meer wordt aanbevolen.
Documentatie voor de nieuwste versie vindt u op Application Insights Java 3.x.
In dit artikel leert u hoe u Application Insights Java 2.x gebruikt. In dit artikel leest u informatie over:
- Ga aan de slag en leer hoe u aanvragen instrumenteert, afhankelijkheden bijhoudt, prestatiemeteritems verzamelt, prestatieproblemen en uitzonderingen diagnosticeert en code schrijft om bij te houden wat gebruikers met uw app doen.
- Verzend traceringslogboeken naar Application Insights en verken deze met behulp van de Application Insights-portal.
- Bewaak afhankelijkheden, gedetecteerde uitzonderingen en uitvoeringstijden van methoden in Java-web-apps.
- Filter telemetrie in uw Java-web-app.
- Verken metrische gegevens over Linux-systeemprestaties in Application Insights met behulp van
collectd
. - Meet metrische gegevens voor toepassingscode op basis van virtuele Java-machines (JVM). Exporteer de gegevens naar uw favoriete bewakingssystemen met behulp van Micrometer-toepassingsbewaking.
Notitie
Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeksen om te profiteren van nieuwe mogelijkheden.
Aan de slag met Application Insights in een Java-webproject
In deze sectie gebruikt u de Application Insights SDK om aanvragen te instrumenteren, afhankelijkheden bij te houden, prestatiemeteritems te verzamelen, prestatieproblemen en uitzonderingen te diagnosticeren en code te schrijven om bij te houden wat gebruikers met uw app doen.
Application Insights is een uitbreidbare analyseservice voor webontwikkelaars die u helpt de prestaties en het gebruik van uw live-toepassing te begrijpen. Application Insights biedt ondersteuning voor Java-apps die in Linux, Unix of Windows worden uitgevoerd.
Vereisten
U hebt de volgende zaken nodig:
- Een Azure-account met een actief abonnement. U kunt gratis een account maken.
- Een werkende Java-toepassing.
Een Application Insights-instrumentatiesleutel ophalen
Meld u aan bij de Azure-portal.
Maak in de Azure Portaleen Application Insights-resource. Stel het toepassingstype in op Java-webtoepassing.
Zoek de instrumentatiesleutel van de nieuwe resource. U moet deze sleutel zo dadelijk in de code van uw project plakken.
De Application Insights-SDK voor Java toevoegen aan uw project
Kies uw projecttype.
Als uw project al is ingesteld voor het gebruik van Maven voor build, voegt u de volgende code samen met het pom.xml-bestand . Vervolgens vernieuwt u de projectafhankelijkheden om de binaire bestanden te downloaden.
<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>
Veelgestelde vragen
Wat is de relatie tussen de
-web-auto
onderdelen ,-web
en-core
?-
applicationinsights-web-auto
biedt u metrische gegevens die het aantal HTTP-servlet-aanvragen en reactietijden bijhouden door het Application Insights-servletfilter automatisch te registreren tijdens runtime. -
applicationinsights-web
Biedt u ook metrische gegevens waarmee het aantal HTTP-servlet-aanvragen en de reactietijden worden bijgehouden. Maar handmatige registratie van het Application Insights-servletfilter in uw toepassing is vereist. -
applicationinsights-core
biedt u de bare API, bijvoorbeeld als uw toepassing niet op servlet is gebaseerd.
-
Hoe moet ik de SDK bijwerken naar de nieuwste versie?
- Vanaf november 2020 raden we u aan om Application Insights Java 3.x te gebruiken voor het bewaken van Java-toepassingen. Zie Application Insights Java 3.x voor meer informatie over hoe u aan de slag gaat.
Een bestand ApplicationInsights.xml toevoegen
Voeg ApplicationInsights.xml toe aan de map resources in uw project of zorg ervoor dat deze is toegevoegd aan het implementatieklassepad van uw project. Kopieer de volgende XML-code naar het bestand.
Vervang de instrumentatiesleutel door de sleutel die u hebt verkregen van de 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>
Optioneel kan het configuratiebestand zich op elke locatie bevinden die toegankelijk is voor uw toepassing. De systeemeigenschap -Dapplicationinsights.configurationDirectory
geeft de map op dieApplicationInsights.xmlbevat. Een configuratiebestand op E:\myconfigs\appinsights\ApplicationInsights.xml wordt bijvoorbeeld geconfigureerd met de eigenschap -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"
.
- De instrumentatiesleutel wordt samen met alle telemetrie-items verzonden en instrueert Application Insights om deze in de resource weer te geven.
- Het onderdeel voor de HTTP-aanvraag is optioneel. Het verzendt automatisch telemetrie over aanvragen en reactietijden naar de portal.
- Correlatie tussen gebeurtenissen is een aanvulling op het onderdeel voor de HTTP-aanvraag. Er wordt een id toegewezen aan elke aanvraag die door de server wordt ontvangen. Vervolgens wordt deze id als eigenschap toegevoegd aan elk telemetrie-item als de eigenschap
Operation.Id
. Hiermee kunt u de telemetrie correleren die aan elke aanvraag zijn gekoppeld door een filter in te stellen in Diagnostische zoekopdrachten.
Andere manieren om de instrumentatiesleutel in te stellen
De Application Insights-SDK zoekt in deze volgorde naar de sleutel:
- Systeemeigenschap: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Omgevingsvariabele: APPINSIGHTS_INSTRUMENTATIONKEY
- Configuratiebestand: ApplicationInsights.xml
U kunt de instrumentatiesleutel ook instellen in code:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Agent toevoegen
Installeer de Java-agent voor het vastleggen van uitgaande HTTP-aanroepen, JDBC-query's, toepassingslogboeken en betere naamgeving van bewerkingen.
Uw toepassing uitvoeren
Voer het uit in de foutopsporingsmodus op uw ontwikkelcomputer of publiceer het naar uw server.
Uw telemetrie in Application Insights weergeven
Ga terug naar uw Application Insights-resource in de Azure Portal.
Gegevens van HTTP-aanvragen worden weergegeven in het overzichtsvenster. Als deze niet wordt weergegeven, wacht u een paar seconden en selecteert u vervolgens Vernieuwen.
Meer informatie over metrische gegevens.
Klik in een grafiek voor gedetailleerdere cumulatieve metrische gegevens.
Gegevens van exemplaren
Klik op een specifiek aanvraagtype om de afzonderlijke exemplaren weer te geven.
Log Analytics: krachtige querytaal
Naarmate u meer gegevens verzamelt, kunt u query's uitvoeren om gegevens te aggregeren en afzonderlijke exemplaren te vinden. Log Analytics is een krachtig hulpprogramma voor het begrijpen van prestaties en gebruik, en voor diagnostische doeleinden.
Uw app installeren op de server
Publiceer nu uw app naar de server, laat mensen deze gebruiken en bekijk hoe de telemetrie in de portal wordt weergegeven.
Controleer of de firewall het verzenden van telemetrie door uw app naar deze poorten toestaat:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Als uitgaand verkeer via een firewall moet worden gerouteerd, definieert u de systeemeigenschappen
http.proxyHost
enhttp.proxyPort
.Installeer op Windows-servers:
Microsoft Visual C++ Redistributable
Met dit onderdeel worden prestatiemeteritems ingeschakeld.
configuratie van Azure App Service, Azure Kubernetes Service, VM's
De beste en eenvoudigste manier om uw toepassingen te bewaken die worden uitgevoerd op azure-resourceproviders, is het gebruik van Application Insights Java 3.x.
Uitzonderingen en mislukte aanvragen
Niet-verwerkte uitzonderingen en aanvraagfouten worden automatisch verzameld door het Application Insights-webfilter.
Als u gegevens over andere uitzonderingen wilt verzamelen, kunt u aanroepen naar trackException() invoegen in uw code.
Methodeaanroepen en externe afhankelijkheden bewaken
Installeer de Java-agent voor het logboek opgegeven interne methoden en aanroepen via JDBC, met timinggegevens en voor automatische bewerkingsnaamgeving.
Gedistribueerde W3C-tracering
De Application Insights Java SDK ondersteunt nu gedistribueerde W3C-tracering.
De binnenkomende SDK-configuratie wordt verder uitgelegd in Telemetriecorrelatie in Application Insights.
Uitgaande SDK-configuratie wordt gedefinieerd in het AI-Agent.xml-bestand .
Prestatiemeteritems
SelecteerMetrische gegevensonderzoeken> om een bereik van prestatiemeteritems weer te geven.
Het verzamelen van prestatiemeteritems aanpassen
Als u het verzamelen van de standaardset prestatiemeteritems wilt uitschakelen, voegt u de volgende code toe onder het hoofdknooppunt van het ApplicationInsights.xml-bestand :
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Meer prestatiemeteritems verzamelen
U kunt meer prestatiemeteritems opgeven die moeten worden verzameld.
JMX-tellers (beschikbaar gemaakt door de virtuele Java-machine)
<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
: De naam die wordt weergegeven in de Application Insights-portal. -
objectName
: De naam van het JMX-object. -
attribute
: het kenmerk van de JMX-objectnaam die moet worden opgehaald. -
type
(optioneel): Het type kenmerk van het JMX-object:- Standaardinstelling: een eenvoudig type, zoals int of long.
-
composite
: de prestatiemeteritems hebben de indelingAttribute.Data
. -
tabular
: de prestatiemeteritems hebben de indeling van een tabelrij.
Windows-prestatiemeteritems
Elk Windows-prestatiemeteritem maakt deel uit van een categorie (net zoals een veld deel uitmaakt van een klasse). Categorieën kunnen globaal zijn of genummerde of benoemde exemplaren hebben.
<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
: De naam die wordt weergegeven in de Application Insights-portal. -
categoryName
: De prestatiemetercategorie (prestatieobject) waaraan dit prestatiemeteritems is gekoppeld. -
counterName
: de naam van het prestatiemeteritems. -
instanceName
: De naam van het prestatiemeteritemscategorieexemplaar of een lege tekenreeks (""), als de categorie één exemplaar bevat. AlscategoryName
isProcess
en het prestatiemeteritem dat u wilt verzamelen afkomstig is van het huidige JVM-proces waarop uw app wordt uitgevoerd, geeft u"__SELF__"
op.
Unix-prestatiemeteritems
Installeer verzameld met de Application Insights-invoegtoepassing om een breed scala aan systeem- en netwerkgegevens op te halen.
Gebruikers- en sessiegegevens ophalen
U verzendt nu telemetrie vanaf uw webserver. Als u de volledige 360-gradenweergave van uw toepassing wilt krijgen, kunt u meer bewaking toevoegen:
- Voeg telemetrie toe aan uw webpagina's voor het bewaken van paginaweergaven en metrische gegevens over gebruikers.
- Stel webtests in om te controleren of de toepassing live en responsief blijft.
Uw eigen telemetrie verzenden
Nu u de SDK hebt geïnstalleerd, kunt u de API gebruiken om uw eigen telemetriegegevens te verzenden:
- Houd aangepaste gebeurtenissen en metrische gegevens bij voor meer informatie over wat gebruikers met uw toepassing doen.
- Doorzoek gebeurtenissen en logboeken om problemen beter te kunnen analyseren.
Webtests voor beschikbaarheid
Application Insights kan uw website regelmatig testen om te controleren of deze actief is en goed reageert.
Meer informatie over het instellen van webtests voor beschikbaarheid.
Problemen oplossen
Zie het speciale artikel over probleemoplossing.
Connectiviteit testen tussen uw toepassingshost en de opnameservice
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen naar onze opname-eindpunten. U kunt de connectiviteit van uw webserver of toepassingshostcomputer met de opnameservice-eindpunten testen met behulp van onbewerkte REST-clients van PowerShell of curl-opdrachten. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen.
Java-traceringslogboeken verkennen in Application Insights
Als u Logback of Log4J (v1.2 of v2.0) gebruikt voor tracering, kunt u uw traceringslogboeken automatisch naar Application Insights laten verzenden, waar u ze kunt verkennen en doorzoeken.
Tip
U hoeft uw Application Insights-instrumentatiesleutel slechts eenmaal in te stellen voor uw toepassing. Als u een framework zoals Java Spring gebruikt, hebt u de sleutel mogelijk al ergens anders in de configuratie van uw app geregistreerd.
De Application Insights Java-agent gebruiken
Standaard legt de Application Insights Java-agent automatisch logboekregistratie vast die wordt uitgevoerd op het WARN
niveau en hoger.
U kunt de drempelwaarde voor logboekregistratie wijzigen die is vastgelegd met behulp van het AI-Agent.xml-bestand :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
U kunt de logboekregistratie van de Java-agent uitschakelen met behulp van het AI-Agent.xml-bestand :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternatieven
In plaats van de Java-agent te gebruiken, kunt u deze instructies volgen.
De Java SDK installeren
Volg de instructies voor het installeren van de Application Insights SDK voor Java, als u dat nog niet hebt gedaan.
Logboekregistratiebibliotheken toevoegen aan uw project
Kies de juiste methode voor uw project.
Maven
Als uw project al is ingesteld voor het gebruik van Maven voor build, voegt u een van de volgende codefragmenten samen in uw pom.xml-bestand . Vervolgens vernieuwt u de projectafhankelijkheden om de binaire bestanden te downloaden.
Logback
<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
Als uw project al is ingesteld voor het gebruik van Gradle voor build, voegt u een van de volgende regels toe aan de dependencies
groep in het bestand build.gradle . Vervolgens vernieuwt u de projectafhankelijkheden om de binaire bestanden te downloaden.
Logback
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.+'
De jar-koppeling gebruiken
Volg de richtlijnen om de Application Insights Java SDK handmatig te installeren en het JAR-bestand te downloaden. Selecteer op de pagina Maven Central de jar
koppeling in de downloadsectie voor de juiste appender. Voeg de gedownloade appender jar toe aan het project.
Logger | Downloaden | Bibliotheek |
---|---|---|
Logback | Jar voor logback-appender | applicationinsights-logging-logback |
Log4J v2.0 | Jar voor Log4J v2-appender | applicationinsights-logging-log4j2 |
Log4j v1.2 | Log4J v1.2 appender Jar | applicationinsights-logging-log4j1_2 |
De appender toevoegen aan uw logboekregistratieframework
Als u traceringen wilt ophalen, voegt u het relevante codefragment samen met het Logback- of Log4J-configuratiebestand.
Logback
<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>
Naar de Application Insights-appenders kan worden verwezen door een geconfigureerde logboekregistratie en niet noodzakelijkerwijs door de root-logger, zoals wordt weergegeven in de voorgaande codevoorbeelden.
Uw traceringen verkennen in de Application Insights-portal
Nu u uw project hebt geconfigureerd voor het verzenden van traceringen naar Application Insights, kunt u deze traceringen bekijken en doorzoeken in de Application Insights-portal in het deelvenster Zoeken .
Uitzonderingen die zijn ingediend via logboekregistraties, worden in de portal weergegeven als Telemetrie van uitzonderingen.
Afhankelijkheden, gedetecteerde uitzonderingen en uitvoeringstijden van methoden in Java-web-apps bewaken
Als u uw Java-web-app hebt geïnstrueerd met de Application Insights SDK, kunt u de Java-agent gebruiken om diepere inzichten te verkrijgen, zonder codewijzigingen:
Afhankelijkheden: gegevens over aanroepen die uw toepassing naar andere onderdelen uitvoert, waaronder:
-
Uitgaande HTTP-aanroepen: aanroepen via
Apache HttpClient
,OkHttp
enjava.net.HttpURLConnection
worden vastgelegd. - Redis-aanroepen: oproepen via de Jedis-client worden vastgelegd.
- JDBC-query's: als de aanroep langer duurt dan tien seconden voor MySQL en PostgreSQL, rapporteert de agent het queryplan.
-
Uitgaande HTTP-aanroepen: aanroepen via
Toepassingslogboeken: uw toepassingslogboeken vastleggen en correleren met HTTP-aanvragen en andere telemetrie:
- Log4j 1.2
- Log4j2
- Logback
Betere naamgeving van bewerkingen: wordt gebruikt voor het samenvoegen van aanvragen in de portal.
-
Spring: op
@RequestMapping
basis van . -
JAX-RS: op
@Path
basis van .
-
Spring: op
Als u de Java-agent wilt gebruiken, installeert u deze op uw server. Uw web-apps moeten worden geïnstrueerd met de Application Insights Java SDK.
De Application Insights-agent voor Java installeren
Download de 2.x-agent op de computer waarop uw Java-server wordt uitgevoerd. Zorg ervoor dat de versie van de 2.x Java-agent die u gebruikt, overeenkomt met de versie van de 2.x Application Insights Java SDK die u gebruikt.
Bewerk het opstartscript van de toepassingsserver en voeg het volgende JVM-argument toe:
-javaagent:<full path to the agent JAR file>
Bijvoorbeeld in Tomcat op een Linux-computer:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"
Start de toepassingsserver opnieuw op.
De agent configureren
Maak een bestand met de naam AI-Agent.xml en plaats dit in dezelfde map als het JAR-bestand van de agent.
Stel de inhoud van het XML-bestand in. Bewerk het volgende voorbeeld om de gewenste functies op te nemen of weg te laten.
<?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>
Meer configuratie (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Volg deze stappen voor Azure App Service:
Selecteer Instellingen>Toepassingsinstellingen.
Voeg onder App-instellingen een nieuw sleutelwaardepaar toe:
-
Sleutel:
JAVA_OPTS
-
Waarde:
-javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar
De agent moet worden verpakt als een resource in uw project, zodat deze in de map D:/home/site/wwwroot/ terechtkomt . Als u wilt controleren of uw agent zich in de juiste App Service map bevindt, gaat u naar Development Tools>Advanced Tools>Debug Console en bekijkt u de inhoud van de sitemap.
-
Sleutel:
Sla de instellingen op en start de app opnieuw op. Deze stappen zijn alleen van toepassing op app-services die worden uitgevoerd in Windows.
Notitie
AI-Agent.xml en het JAR-bestand van de agent zich in dezelfde map bevinden. Ze worden vaak samen geplaatst in de map /resources van het project.
Gedistribueerde W3C-tracering inschakelen
Voeg het volgende codefragment toe aan AI-Agent.xml:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Notitie
De achterwaartse compatibiliteitsmodus is standaard ingeschakeld. De enableW3CBackCompat
parameter is optioneel en mag alleen worden gebruikt als u deze wilt uitschakelen.
In het ideale geval is dit het geval wanneer al uw services zijn bijgewerkt naar nieuwere versies van SDK's die het W3C-protocol ondersteunen. We raden u aan zo snel mogelijk over te stappen op nieuwere versies van SDK's met W3C-ondersteuning.
Zorg ervoor dat zowel binnenkomende als uitgaande configuraties (agent) exact hetzelfde zijn.
De gegevens weergeven
In de Application Insights-resource worden geaggregeerde externe afhankelijkheid en uitvoeringstijden van methoden weergegeven onder de tegel Prestaties.
Als u wilt zoeken naar afzonderlijke exemplaren van afhankelijkheids-, uitzonderings- en methoderapporten, opent u Zoeken.
Meer informatie over het diagnosticeren van afhankelijkheidsproblemen.
Vragen of problemen?
Gebruik de volgende resources:
- Zijn er geen gegevens? Firewall-uitzonderingen instellen.
- Problemen met Java oplossen.
Telemetrie filteren in uw Java-web-app
Filters bieden een manier om de telemetrie te selecteren die uw Java-web-app naar Application Insights verzendt. Er zijn enkele out-of-the-box filters die u kunt gebruiken. U kunt ook uw eigen aangepaste filters schrijven.
De out-of-the-box filters zijn onder andere:
- Ernstniveau traceren.
- Specifieke URL's, trefwoorden of antwoordcodes.
- Snelle antwoorden. Met andere woorden, aanvragen waarop uw app snel heeft gereageerd.
- Specifieke gebeurtenisnamen.
Notitie
Filtert de metrische gegevens van uw app scheef. U kunt bijvoorbeeld besluiten dat u voor het diagnosticeren van trage reacties een filter instelt om snelle reactietijden te negeren. Maar u moet er rekening mee houden dat de gemiddelde reactietijden die door Application Insights worden gerapporteerd, dan langzamer zijn dan de werkelijke snelheid. Ook is het aantal aanvragen kleiner dan het werkelijke aantal.
Als dit een probleem is, gebruikt u in plaats daarvan Steekproeven .
Filters instellen
Voeg inApplicationInsights.xmleen TelemetryProcessors
sectie toe zoals in dit voorbeeld:
<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>
Controleer de volledige set ingebouwde processors.
Ingebouwde filters
In deze sectie worden de ingebouwde filters besproken die beschikbaar zijn.
Filter voor metrische telemetrie
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded
: Door komma's gescheiden lijst met aangepaste metrische namen
Telemetriefilter paginaweergave
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS
: Duur verwijst naar de tijd die nodig is om de pagina te laden. Als deze parameter is ingesteld, worden pagina's die sneller zijn geladen dan deze keer niet gerapporteerd. -
NotNeededNames
: door komma's gescheiden lijst met paginanamen. -
NotNeededUrls
: door komma's gescheiden lijst met URL-fragmenten. Hiermee filtert u bijvoorbeeld"home"
alle pagina's met 'home' in de URL.
Telemetriefilter aanvragen
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Synthetische bronfilter
Hiermee filtert u alle telemetrie met waarden in de SyntheticSource
eigenschap. Aanvragen van bots, spiders en beschikbaarheidstests zijn opgenomen.
Hiermee filtert u telemetrie voor alle synthetische aanvragen:
<Processor type="SyntheticSourceFilter" />
Hiermee filtert u telemetrie voor specifieke synthetische bronnen:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded
: Door komma's gescheiden lijst met synthetische bronnamen
Telemetrie gebeurtenisfilter
Hiermee filtert u aangepaste gebeurtenissen die zijn geregistreerd met trackEvent():
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames
: Door komma's gescheiden lijst met gebeurtenisnamen
Telemetriefilter traceren
Filtert logboektraceringen die zijn geregistreerd met behulp van TrackTrace() of een collector voor logboekregistratieframework:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
De
FromSeverityLevel
geldige waarden zijn:- UIT: Filtert alle traceringen uit.
- TRACE: Geen filtering. Is gelijk aan TRACE-niveau.
- INFO: Filtert traceringsniveau uit.
- WAARSCHUWEN: Filtert TRACE en INFO uit.
- FOUT: filtert WARN, INFO en TRACE uit.
- KRITIEK: filtert alles behalve KRITIEK.
Aangepaste filters
In de volgende secties ziet u de stappen voor het maken van uw eigen aangepaste filters.
Codeer uw filter
Maak in uw code een klasse waarmee wordt geïmplementeerd 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;
}
}
Het filter in het configuratiebestand aanroepen
Nu in ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Uw filter aanroepen (Java Spring)
Voor toepassingen op basis van het Spring-framework moeten aangepaste telemetrieprocessors in uw hoofdtoepassingsklasse worden geregistreerd als een bean. Ze worden vervolgens automatisch bekabeld wanneer de toepassing wordt gestart.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
U maakt uw eigen filterparameters in application.properties
. Vervolgens gebruikt u het externe configuratieframework van Spring Boot om deze parameters door te geven aan uw aangepaste filter.
Problemen oplossen
Deze sectie biedt een tip voor probleemoplossing.
Mijn filter werkt niet
Controleer of u geldige parameterwaarden hebt opgegeven. Duur moet bijvoorbeeld gehele getallen zijn. Ongeldige waarden zorgen ervoor dat het filter wordt genegeerd. Als uw aangepaste filter een uitzondering genereert van een constructor of set-methode, wordt deze genegeerd.
verzameld: metrische gegevens over Linux-prestaties in Application Insights (afgeschaft)
Als u de metrische gegevens over linux-systeemprestaties in Application Insights wilt verkennen, installeert u verzameld samen met de Application Insights-invoegtoepassing. Deze opensource-oplossing verzamelt verschillende systeem- en netwerkstatistieken.
Normaal gesproken gebruikt collectd
u als u uw Java-webservice al hebt geïnstrueerd met Application Insights. Het biedt u meer gegevens om de prestaties van uw app te verbeteren of problemen te diagnosticeren.
Uw instrumentatiesleutel ophalen
Open in de Azure Portal de Application Insights-resource waar u de gegevens wilt weergeven. U kunt ook een nieuwe resource maken.
Maak een kopie van de instrumentatiesleutel, waarmee de resource wordt geïdentificeerd.
Collectd en de invoegtoepassing installeren
Op uw Linux-servercomputers:
- Installeer verzamelde versie 5.4.0 of hoger.
- Download de invoegtoepassing Voor het verzamelen van schrijfprogramma's van Application Insights. Noteer het versienummer.
- Kopieer het jar-bestand van de invoegtoepassing naar
/usr/share/collectd/java
. - Bewerken
/etc/collectd/collectd.conf
:Zorg ervoor dat de Java-invoegtoepassing is ingeschakeld.
Werk de JVMArg voor de
java.class.path
bij zodat deze het volgende jar-bestand bevat. Werk het versienummer bij zodat het overeenkomt met het nummer dat u hebt gedownload:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Voeg dit codefragment toe met behulp van de instrumentatiesleutel van uw resource:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>
Dit is onderdeel van een voorbeeldconfiguratiebestand:
... # 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> ...
Configureer andere verzamelde invoegtoepassingen, waarmee verschillende gegevens uit verschillende bronnen kunnen worden verzameld.
Opnieuw opstarten collectd
volgens de handleiding.
De gegevens weergeven in Application Insights
Open Metrische gegevens in uw Application Insights-resource en voeg grafieken toe. Selecteer de metrische gegevens die u wilt zien in de categorie Aangepast .
De metrische gegevens worden standaard geaggregeerd op alle hostcomputers waarvan de metrische gegevens zijn verzameld. Als u de metrische gegevens per host wilt weergeven, schakelt u in het deelvenster Grafiekdetailsgroeperen in en kiest u vervolgens groeperen op CollectD-Host.
Uploaden van specifieke statistieken uitsluiten
De Application Insights-invoegtoepassing verzendt standaard alle gegevens die zijn verzameld door alle ingeschakelde collectd read
invoegtoepassingen.
Gegevens uitsluiten van specifieke invoegtoepassingen of gegevensbronnen:
Bewerk het configuratiebestand.
Voeg
<Plugin ApplicationInsightsWriter>
in instructieregels toe zoals die in de volgende tabel:Richtlijn Effect Exclude disk
Sluit alle gegevens uit die door de disk
invoegtoepassing worden verzameld.Exclude disk:read,write
Sluit de bronnen met de naam read
enwrite
uit van dedisk
invoegtoepassing.
Afzonderlijke richtlijnen met een nieuwe regel.
Problemen?
In deze sectie vindt u tips voor probleemoplossing.
Ik zie geen gegevens in de portal
Probeer deze opties:
- Open Zoeken om te zien of de onbewerkte gebeurtenissen zijn aangekomen. Soms duurt het langer voordat ze worden weergegeven in Metrics Explorer.
- Mogelijk moet u firewall-uitzonderingen instellen voor uitgaande gegevens.
- Schakel tracering in de Application Insights-invoegtoepassing in. Voeg deze regel toe binnen
<Plugin ApplicationInsightsWriter>
:SDKLogger true
- Open een terminal en start
collectd
in de uitgebreide modus om eventuele problemen te zien die worden gerapporteerd:sudo collectd -f
Bekend probleem
De Application Insights-schrijfinvoegtoepassing is niet compatibel met bepaalde leesinvoegtoepassingen. Sommige invoegtoepassingen verzenden NaN
soms , maar de Application Insights-invoegtoepassing verwacht een drijvendekommagetal.
-
Symptoom: In het
collectd
logboek worden fouten weergegeven die 'AI: ... SyntaxError: Onverwacht token N.' - Tijdelijke oplossing: sluit gegevens uit die zijn verzameld door de invoegtoepassingen voor het schrijven van problemen.
Micrometer gebruiken met de Application Insights Java SDK (niet aanbevolen)
Met micrometer-toepassingsbewaking worden metrische gegevens voor op JVM gebaseerde toepassingscode gemeten en kunt u de gegevens exporteren naar uw favoriete bewakingssystemen. In deze sectie leert u hoe u Micrometer gebruikt met Application Insights voor zowel Spring Boot- als niet-Spring Boot-toepassingen.
Spring Boot 1.5x gebruiken
Voeg de volgende afhankelijkheden toe aan uw pom.xml - of build.gradle-bestand :
- Application Insights spring-boot-starter 2.5.0 of hoger.
- Micrometer Azure Registry 1.1.0 of hoger.
- Micrometer Spring Legacy 1.1.0 of hoger. Hiermee wordt de automatisch geconfigureerde code in het Spring-framework backports.
- ApplicationInsights-resource.
Volg deze stappen:
Werk het pom.xml-bestand van uw Spring Boot-toepassing bij en voeg de volgende afhankelijkheden eraan toe:
<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>
Werk het bestand application.properties of YML bij met de Application Insights-instrumentatiesleutel met behulp van de volgende eigenschap:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Bouw uw toepassing en voer deze uit.
Met de voorgaande stappen kunt u aan de slag met vooraf geaggregeerde metrische gegevens die automatisch worden verzameld in Azure Monitor.
Spring 2.x gebruiken
Voeg de volgende afhankelijkheden toe aan uw pom.xml - of build.gradle-bestand :
- Application Insights Spring-boot-starter 2.1.2 of hoger
- Azure-spring-boot-metrics-starters 2.0.7 of hoger
- Application Insights-resource
Volg deze stappen:
Werk het pom.xml-bestand van uw Spring Boot-toepassing bij en voeg de volgende afhankelijkheid toe:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>
Werk het bestand application.properties of YML bij met de Application Insights-instrumentatiesleutel met behulp van de volgende eigenschap:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Bouw uw toepassing en voer deze uit.
Met de voorgaande stappen kunt u aan de slag met vooraf geaggregeerde metrische gegevens die automatisch worden verzameld in Azure Monitor. Zie het leesmij-bestand op GitHub voor meer informatie over het verfijnen van Application Insights Spring Boot Starter.
Standaard metrische gegevens:
- Automatisch geconfigureerde metrische gegevens voor Tomcat, JVM, Logback Metrics, Log4J Metrics, Uptime Metrics, Processor Metrics en FileDescriptorMetrics.
- Als Netflix Hystrix bijvoorbeeld aanwezig is op het klaspad, krijgen we die metrische gegevens ook.
- De volgende metrische gegevens kunnen beschikbaar zijn door de respectieve beans toe te voegen:
-
CacheMetrics
(CaffeineCache
,EhCache2
,GuavaCache
,HazelcastCache
enJCache
) DataBaseTableMetrics
HibernateMetrics
JettyMetrics
-
OkHttp3
Metrische gegevens -
Kafka
Metrische gegevens
-
Automatische verzameling van metrische gegevens uitschakelen:
- Metrische JVM-gegevens:
management.metrics.binders.jvm.enabled=false
- Metrische logbackgegevens:
management.metrics.binders.logback.enabled=false
- Metrische gegevens over uptime:
management.metrics.binders.uptime.enabled=false
- Metrische processorgegevens:
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 Metrics if library on
classpath
:spring.aop.enabled=false
Notitie
Geef de voorgaande eigenschappen op in het bestand application.properties of application.yml van uw Spring Boot-toepassing.
Micrometer gebruiken met niet-Spring Boot-webtoepassingen
Voeg de volgende afhankelijkheden toe aan uw pom.xml - of build.gradle-bestand :
- Application Insights Web Auto 2.5.0 of hoger
- Micrometer Azure Registry 1.1.0 of hoger
- Application Insights-resource
Volg deze stappen:
Voeg de volgende afhankelijkheden toe aan uw pom.xml - of build.gradle-bestand :
<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>
Als u dit nog niet hebt gedaan, voegt u het ApplicationInsights.xml-bestand toe aan de map resources. Zie Een ApplicationInsights.xml-bestand toevoegen voor meer informatie.
Voorbeeld van Servlet-klasse (verzendt een metrische timer):
@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"); } }
Voorbeeldconfiguratieklasse:
@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) { } }
Zie de Micrometer-documentatie voor meer informatie over metrische gegevens.
Andere voorbeeldcode voor het maken van verschillende typen metrische gegevens vindt u in de officiële Micrometer GitHub-opslagplaats.
Meer verzameling metrische gegevens binden
In de volgende secties ziet u hoe u meer metrische gegevens kunt verzamelen.
SpringBoot/Spring
Maak een bean van de respectieve metrische categorie. Stel dat u metrische gegevens van Guava Cache nodig hebt:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Verschillende metrische gegevens zijn niet standaard ingeschakeld, maar kunnen op de voorgaande manier worden gebonden. Zie de Micrometer GitHub-opslagplaats voor een volledige lijst.
Niet-Spring-apps
Voeg de volgende bindingscode toe aan het configuratiebestand:
New GuavaCacheMetrics().bind(registry);
Volgende stappen
- Voeg bewaking toe aan uw webpagina's om laadtijden van pagina's, AJAX-aanroepen en browser-uitzonderingen te bewaken.
- Typ aangepaste telemetrie om het gebruik in de browser of op de server bij te houden.
- Gebruik Log Analytics voor krachtige query's over telemetrie van uw app.
- Gebruik Diagnostische zoekopdrachten.
- Overweeg steekproeven als een alternatief voor filteren die uw metrische gegevens niet scheeftrekken.
- Zie de documentatie voor Micrometer voor meer informatie over Micrometer.
- Zie de documentatie over Spring on Azure voor meer informatie over Spring on Azure.
- Zie Azure voor Java-ontwikkelaars voor meer informatie.