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 Application Insights-instrumentatiesleutel ophalen

  1. Meld u aan bij de Azure-portal.

  2. Maak in de Azure Portaleen Application Insights-resource. Stel het toepassingstype in op Java-webtoepassing.

  3. Zoek de instrumentatiesleutel van de nieuwe resource. U moet deze sleutel zo dadelijk in de code van uw project plakken.

    Schermopname van het deelvenster Overzicht voor een Application Insights-resource in de Azure Portal met de instrumentatiesleutel gemarkeerd.

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-autoonderdelen , -weben -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.

Schermopname van voorbeeldgegevens van een overzicht.

Meer informatie over metrische gegevens.

Klik in een grafiek voor gedetailleerdere cumulatieve metrische gegevens.

Schermopname van het deelvenster Application Insights-fouten met grafieken.

Gegevens van exemplaren

Klik op een specifiek aanvraagtype om de afzonderlijke exemplaren weer te geven.

Schermopname van het inzoomen op een specifieke voorbeeldweergave.

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.

Schermopname van een voorbeeld van Log Analytics in de Azure Portal.

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 en http.proxyPort.

  • Installeer op Windows-servers:

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.

Schermopname van het deelvenster Metrische gegevens voor een Application Insights-resource in de Azure Portal met privébytes voor proces geselecteerd.

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 indeling Attribute.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. Als categoryName is Process 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:

Uw eigen telemetrie verzenden

Nu u de SDK hebt geïnstalleerd, kunt u de API gebruiken om uw eigen telemetriegegevens te verzenden:

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

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.

Schermopname van het zoekvenster voor een Application Insights-resource in de Azure Portal.

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, OkHttpen java.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.
  • 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 @RequestMappingbasis van .
    • JAX-RS: op @Pathbasis van .

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

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

  2. 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>"

  3. 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:

  1. Selecteer Instellingen>Toepassingsinstellingen.

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

  3. 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:

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.

Schermopname van het overzichtsvenster voor een Application Insights-resource in de Azure Portal met de instrumentatiesleutel gemarkeerd.

Collectd en de invoegtoepassing installeren

Op uw Linux-servercomputers:

  1. Installeer verzamelde versie 5.4.0 of hoger.
  2. Download de invoegtoepassing Voor het verzamelen van schrijfprogramma's van Application Insights. Noteer het versienummer.
  3. Kopieer het jar-bestand van de invoegtoepassing naar /usr/share/collectd/java.
  4. 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 en write uit van de disk 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 NaNsoms , 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.

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 :

Volg deze stappen:

  1. 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>
    
    
  2. 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>

  3. 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 :

Volg deze stappen:

  1. 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>
    
  2. 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>

  3. 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, HazelcastCacheen JCache)
    • 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 :

Volg deze stappen:

  1. 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>
    
  2. 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.

  3. 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");
          }
    
        }
    
    
  4. 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