Aan de slag met Application Insights in een Java-webprojectGet started with Application Insights in a Java web project

Application Insights is een uitbreidbare analyseservice voor webontwikkelaars die u helpt de prestaties en het gebruik van uw live-toepassing te begrijpen.Application Insights is an extensible analytics service for web developers that helps you understand the performance and usage of your live application. Gebruik het om de aanvraag automatisch te instrumenteren, afhankelijkheden bij te houden en prestatie meter items te verzamelen, prestatie problemen en uitzonde ringen te diagnosticeren en code te schrijven om te volgen wat gebruikers met uw app doen.Use it to automatically instrument request, track dependencies, and collect performance counters, diagnose performance issues and exceptions, and write code to track what users do with your app.

Scherm opname van voorbeeld gegevens van overzicht

Application Insights biedt ondersteuning voor Java-apps die in Linux, Unix of Windows worden uitgevoerd.Application Insights supports Java apps running on Linux, Unix, or Windows.

U hebt de volgende zaken nodig:You need:

1. een Application Insights instrumentatie sleutel ophalen1. Get an Application Insights instrumentation key

  1. Meld u aan bij de Microsoft Azure Portal.Sign in to the Microsoft Azure portal.

  2. Maak een Application Insights-resource.Create an Application Insights resource. Stel het toepassingstype in op Java-webtoepassing.Set the application type to Java web application.

  3. Zoek de instrumentatiesleutel van de nieuwe resource.Find the instrumentation key of the new resource. U moet deze sleutel zo dadelijk in de code van uw project plakken.You'll need to paste this key into your code project shortly.

    Op Eigenschappen klikken in het overzicht van de nieuwe resource en de instrumentatiesleutel kopiëren

2. Voeg de Application Insights SDK voor Java toe aan uw project2. Add the Application Insights SDK for Java to your project

Kies de juiste methode voor uw project.Choose the appropriate way for your project.

Als u Maven gebruikt... If you're using Maven...

Als uw project al is ingesteld om voor de build Maven te gebruiken, voegt u de volgende code in uw pom.xml-bestand in.If your project is already set up to use Maven for build, merge the following code to your pom.xml file.

Vervolgens vernieuwt u de projectafhankelijkheden om de binaire bestanden te downloaden.Then, refresh the project dependencies to get the binaries downloaded.

    <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.5.0</version>
      </dependency>
    </dependencies>

Als u Gradle gebruikt... If you're using Gradle...

Als uw project al is ingesteld om voor de build Gradle te gebruiken, voegt u de volgende code in uw build.gradle-bestand in.If your project is already set up to use Gradle for build, merge the following code to your build.gradle file.

Vervolgens vernieuwt u de projectafhankelijkheden om de binaire bestanden te downloaden.Then refresh the project dependencies to get the binaries downloaded.

    dependencies {
      compile group: 'com.microsoft.azure', name: 'applicationinsights-web-auto', version: '2.5.0'
      // or applicationinsights-web for manual web filter registration
      // or applicationinsights-core for bare API
    }

Als u afhankelijkheden handmatig beheert...Otherwise, if you are manually managing dependencies ...

Download de nieuwste versie en kopieer de vereiste bestanden in uw project, waarbij eventuele vorige versies worden vervangen.Download the latest version and copy the necessary files into your project, replacing any previous versions.

Vragen...Questions...

  • Wat is de relatie tussen de -web-auto, -web en -core onderdelen?What's the relationship between the -web-auto, -web and -core components?

    • applicationinsights-web-auto geeft u metrische gegevens die het aantal HTTP servlet-aanvragen en-reactie tijden bijhouden door het Application Insights servlet-filter tijdens runtime automatisch te registreren.applicationinsights-web-auto gives you metrics that track HTTP servlet request counts and response times, by automatically registering the Application Insights servlet filter at runtime.
    • applicationinsights-web biedt ook metrische gegevens die het aantal servlet en reactie tijden voor HTTP-aanvragen bijhouden, maar hiervoor hand matige registratie van het Application Insights servlet-filter in uw toepassing.applicationinsights-web also gives you metrics that track HTTP servlet request counts and response times, but requires manual registration of the Application Insights servlet filter in your application.
    • applicationinsights-core geeft u alleen de bare API, bijvoorbeeld als uw toepassing niet op servlet is gebaseerd.applicationinsights-core gives you just the bare API, for example, if your application is not servlet-based.
  • Hoe moet ik de SDK bijwerken naar de nieuwste versie?How should I update the SDK to the latest version?

    • Als u Gradle of Maven gebruikt...If you are using Gradle or Maven...
      • Werk uw build-bestand bij om de meest recente versie op te geven.Update your build file to specify the latest version.
    • Als u afhankelijkheden handmatig beheert...If you are manually managing dependencies...

3. een ApplicationInsights. XML-bestand toevoegen3. Add an ApplicationInsights.xml file

Voeg ApplicationInsights.xml toe aan de resourcesmap in uw project of plaats het in het implementatieklassepad van uw project.Add ApplicationInsights.xml to the resources folder in your project, or make sure it is added to your project’s deployment class path. Kopieer de volgende XML-code naar het bestand.Copy the following XML into it.

Vervang de instrumentatiesleutel die u in de Azure Portal hebt verkregen.Substitute the instrumentation key that you got from the 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>

Het configuratiebestand kan ook worden ondergebracht op een locatie die voor uw toepassing toegankelijk is.Optionally, the configuration file can reside in any location accessible to your application. Met systeemeigenschap -Dapplicationinsights.configurationDirectory wordt de map opgegeven die ApplicationInsights.xml bevat.The system property -Dapplicationinsights.configurationDirectory specifies the directory that contains ApplicationInsights.xml. Bijvoorbeeld: een configuratiebestand in E:\myconfigs\appinsights\ApplicationInsights.xml wordt geconfigureerd met eigenschap -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights".For example, a configuration file located at E:\myconfigs\appinsights\ApplicationInsights.xml would be configured with the property -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.The instrumentation key is sent along with every item of telemetry and tells Application Insights to display it in your resource.
  • Het onderdeel voor de HTTP-aanvraag is optioneel.The HTTP Request component is optional. Het verzendt automatisch telemetrie over aanvragen en reactietijden naar de portal.It automatically sends telemetry about requests and response times to the portal.
  • Correlatie tussen gebeurtenissen is een aanvulling op het onderdeel voor de HTTP-aanvraag.Event correlation is an addition to the HTTP request component. Deze aanvulling wijst een id toe aan elke aanvraag die door de server wordt ontvangen en voegt deze id als de eigenschap 'Operation.Id' toe aan elk telemetrie-item.It assigns an identifier to each request received by the server, and adds this identifier as a property to every item of telemetry as the property 'Operation.Id'. Hiermee kunt u de telemetrie die aan elke aanvraag is gekoppeld, correleren door een filter in Diagnostische Zoek opdrachtenin te stellen.It allows you to correlate the telemetry associated with each request by setting a filter in diagnostic search.

Andere manieren om de instrumentatiesleutel in te stellenAlternative ways to set the instrumentation key

De Application Insights-SDK zoekt in deze volgorde naar de sleutel:Application Insights SDK looks for the key in this order:

  1. Systeem eigenschap:-DAPPINSIGHTS_INSTRUMENTATIONKEY = your_ikeySystem property: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
  2. Omgevings variabele: APPINSIGHTS_INSTRUMENTATIONKEYEnvironment variable: APPINSIGHTS_INSTRUMENTATIONKEY
  3. Configuratiebestand: ApplicationInsights.xmlConfiguration file: ApplicationInsights.xml

U kunt de instrumentatiesleutel ook instellen in code:You can also set it in code:

    String instrumentationKey = "00000000-0000-0000-0000-000000000000";

    if (instrumentationKey != null)
    {
        TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
    }

4. agent toevoegen4. Add agent

Installeer de Java-Agent voor het vastleggen van uitgaande HTTP-aanroepen, JDBC-query's, toepassings logboeken en betere bewerkings namen.Install the Java Agent to capture outgoing HTTP calls, JDBC queries, application logging, and better operation naming.

5. uw toepassing uitvoeren5. Run your application

Voer uw app uit in de foutopsporingsmodus op uw ontwikkelcomputer of publiceer de app op uw server.Either run it in debug mode on your development machine, or publish to your server.

6. uw telemetrie in Application Insights weer geven6. View your telemetry in Application Insights

Ga terug naar uw Application Insights-resource in de Microsoft Azure Portal.Return to your Application Insights resource in Microsoft Azure portal.

Gegevens van HTTP-aanvragen worden weergegeven op de overzichtsblade.HTTP requests data appears on the overview blade. (Als dit niet het geval is, wacht u een paar seconden en klikt u vervolgens op Vernieuwen.)(If it isn't there, wait a few seconds and then click Refresh.)

Scherm opname van voorbeeld gegevens van overzicht

Meer informatie over metrische gegevens.Learn more about metrics.

Klik in een grafiek voor gedetailleerdere cumulatieve metrische gegevens.Click through any chart to see more detailed aggregated metrics.

Deel venster met Application Insights fouten met grafieken

Gegevens van exemplarenInstance data

Klik op een specifiek aanvraagtype om de afzonderlijke exemplaren weer te geven.Click through a specific request type to see individual instances.

Inzoomen op een specifieke voorbeeld weergave

Analyse: krachtige querytaalAnalytics: Powerful query language

Naarmate u meer gegevens verzamelt, kunt u query's uitvoeren voor zowel het samenvoegen van gegevens als het zoeken naar afzonderlijke exemplaren.As you accumulate more data, you can run queries both to aggregate data and to find individual instances. Analyse is een krachtig hulpprogramma om inzicht te krijgen in prestaties en gebruik, en om diagnoses uit te voeren.Analytics is a powerful tool for both for understanding performance and usage, and for diagnostic purposes.

Voorbeeld van het hulpprogramma Analyse

7. Installeer uw app op de server7. Install your app on the server

Publiceer nu uw app op de server, geef de app vrij voor gebruik en bekijk de telemetrische gegevens die in de portal binnenkomen.Now publish your app to the server, let people use it, and watch the telemetry show up on the portal.

  • Controleer of de firewall het verzenden van telemetrie door uw app naar deze poorten toestaat:Make sure your firewall allows your application to send telemetry to these ports:

    • dc.services.visualstudio.com:443dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443f5.services.visualstudio.com:443
  • Als uitgaand verkeer via een firewall moet worden gerouteerd, definieert u de systeemeigenschappen http.proxyHost en http.proxyPort.If outgoing traffic must be routed through a firewall, define system properties http.proxyHost and http.proxyPort.

  • Installeer op Windows-servers:On Windows servers, install:

Azure App Service config (veer boot)Azure App Service config (Spring Boot)

Voor Spring boot-apps die worden uitgevoerd in Windows is aanvullende configuratie vereist om te worden uitgevoerd op Azure-app Services.Spring Boot apps running on Windows require additional configuration to run on Azure App Services. Wijzig Web. config en voeg het volgende toe:Modify web.config and add the following:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
        </handlers>
        <httpPlatform processPath="%JAVA_HOME%\bin\java.exe" arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\AzureWebAppExample-0.0.1-SNAPSHOT.jar&quot;">
        </httpPlatform>
    </system.webServer>
</configuration>

Uitzonderingen en mislukte aanvragenExceptions and request failures

Niet-verwerkte uitzonde ringen en mislukte aanvragen worden automatisch door het webfilter van Application Insights verzameld.Unhandled exceptions and request failures are automatically collected by the Application Insights web filter.

Als u gegevens over andere uitzonde ringen wilt verzamelen, kunt u aanroepen naar trackException () in uw code invoegen.To collect data on other exceptions, you can insert calls to trackException() in your code.

Methodeaanroepen en externe afhankelijkheden bewakenMonitor method calls and external dependencies

Installeer de Java-agent om gespecificeerde interne methoden en oproepen via JDBC vast te leggen, inclusief timinggegevens.Install the Java Agent to log specified internal methods and calls made through JDBC, with timing data.

En voor automatische bewerkings naam.And for automatic operation naming.

Gedistribueerde W3C-traceringW3C distributed tracing

De Application Insights Java SDK ondersteunt nu W3C-gedistribueerde tracering.The Application Insights Java SDK now supports W3C distributed tracing.

De configuratie van de inkomende SDK wordt verder uitgelegd in ons artikel over correlatie.The incoming SDK configuration is explained further in our article on correlation.

De uitgaande SDK-configuratie wordt gedefinieerd in het bestand AI-agent. XML .Outgoing SDK configuration is defined in the AI-Agent.xml file.

PrestatiemeteritemsPerformance counters

Open onderzoek, metrische gegevensom een aantal prestatie meter items weer te geven.Open Investigate, Metrics, to see a range of performance counters.

Scherm afbeelding van het deel venster metrische gegevens met het proces eigen bytes geselecteerd

Het verzamelen van prestatiemeteritems aanpassenCustomize performance counter collection

Als u het verzamelen van de standaardset prestatiemeteritems wilt uitschakelen, voegt u de volgende code toe onder het hoofdknooppunt van het ApplicationInsights.xml-bestand:To disable collection of the standard set of performance counters, add the following code under the root node of the ApplicationInsights.xml file:

    <PerformanceCounters>
       <UseBuiltIn>False</UseBuiltIn>
    </PerformanceCounters>

Verzamelen van aanvullende prestatiemeteritemsCollect additional performance counters

U kunt opgeven dat er aanvullende prestatiemeteritems moeten worden verzameld.You can specify additional performance counters to be collected.

JMX-tellers (weergegeven door de virtuele Java-machine)JMX counters (exposed by the Java Virtual 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.displayName – The name displayed in the Application Insights portal.
  • objectName - De JMX-objectnaam.objectName – The JMX object name.
  • attribute - Het kenmerk van de JMX-objectnaam dat moet worden opgehaaldattribute – The attribute of the JMX object name to fetch
  • type (optioneel) - Het type kenmerk van het JMX-object:type (optional) - The type of JMX object’s attribute:
    • Standaard: een eenvoudig type, zoals int of long.Default: a simple type such as int or long.
    • composite: de gegevens van de prestatiemeteritems hebben de indeling 'Attribute.Data'composite: the perf counter data is in the format of 'Attribute.Data'
    • tabular: de gegevens van de prestatiemeteritems hebben de vorm van een rij in een tabeltabular: the perf counter data is in the format of a table row

Windows-prestatiemeteritemsWindows performance counters

Elk Windows-prestatiemeteritem maakt deel uit van een categorie (net zoals een veld deel uitmaakt van een klasse).Each Windows performance counter is a member of a category (in the same way that a field is a member of a class). Categorieën kunnen globaal zijn, maar ook genummerde of benoemde exemplaren hebben.Categories can either be global, or can have numbered or named instances.

    <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.displayName – The name displayed in the Application Insights portal.
  • categorynaam: de prestatiemeteritemcategorie (prestatie-object) waaraan dit prestatiemeteritem is gekoppeld.categoryName – The performance counter category (performance object) with which this performance counter is associated.
  • counterName: de naam van het prestatiemeteritem.counterName – The name of the performance counter.
  • instanceName: de naam van het exemplaar van de prestatiemeteritemcategorie, of een lege tekenreeks ("") als de categorie slechts één exemplaar bevat.instanceName – The name of the performance counter category instance, or an empty string (""), if the category contains a single instance. Als de categorienaam Process is en het prestatiemeteritem dat u wilt verzamelen, afkomstig is uit het huidige JVM-proces waarop uw app wordt uitgevoerd, specificeert u "__SELF__".If the categoryName is Process, and the performance counter you'd like to collect is from the current JVM process on which your app is running, specify "__SELF__".

Unix-prestatiemeteritemsUnix performance counters

Gebruikers- en sessiegegevens ophalenGet user and session data

U verzendt nu telemetrie vanaf de webserver.OK, you're sending telemetry from your web server. Wilt u echt een volledig inzicht in uw toepassing, dan kunt u nog meer bewakingsopties toevoegen:Now to get the full 360-degree view of your application, you can add more monitoring:

Uw eigen telemetrie verzendenSend your own telemetry

Nu u de SDK hebt geïnstalleerd, kunt u de API gebruiken voor het verzenden van uw eigen telemetrie.Now that you've installed the SDK, you can use the API to send your own telemetry.

BeschibaarheidswebtestsAvailability web tests

Application Insights kan uw website regelmatig testen om te controleren of deze actief is en goed reageert.Application Insights can test your website at regular intervals to check that it's up and responding well.

Meer informatie over het instellen van Beschik baarheid van webtesten.Learn more about how to set up availability web tests.

Vragen?Questions? Problemen?Problems?

Problemen met Java oplossenTroubleshooting Java

Volgende stappenNext steps