Freigeben über


Application Insights für Java 2.x

Achtung

Dieser Artikel gilt für Application Insights Java 2.x. Diese Version wird jedoch nicht mehr empfohlen.

Die Dokumentation für die neueste Version finden Sie unter Application Insights Java 3.x.

In diesem Artikel erfahren Sie, wie Sie Application Insights Java 2.x verwenden. In diesem Artikel lernen Sie Folgendes:

  • Ausführen erster Schritte und Erfahren, wie Sie Anforderungen instrumentieren, Abhängigkeiten nachverfolgen, Leistungsindikatoren sammeln, Leistungsprobleme und Ausnahmen diagnostizieren und Code schreiben, um die Aktivitäten der Benutzer Ihrer App nachzuverfolgen
  • Senden von Ablaufverfolgungsprotokollen an Application Insights und deren Erkunden mithilfe des Application Insights-Portals
  • Überwachen von Abhängigkeiten, abgefangenen Ausnahmen und Methodenausführungszeiten in Java-Web-Apps
  • Filtern von Telemetriedaten in einer Java-Web-App
  • Untersuchen von Linux-Systemleistungsmetriken in Application Insights mithilfe von collectd
  • Messen der Metriken für JVM-basierten (Java Virtual Machine) Anwendungscode. Exportieren Sie die Daten mithilfe der Micrometer-Anwendungsüberwachung in Ihre bevorzugten Überwachungssysteme.

Hinweis

Am 31. März 2025 wird der Support für die auf Instrumentierungsschlüsseln basierende Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.

Erste Schritte mit Application Insights in einem Java-Webprojekt

In diesem Abschnitt verwenden Sie das Application Insights SDK, um Anforderungen zu instrumentieren, Abhängigkeiten nachzuverfolgen, Leistungsindikatoren zu sammeln, Leistungsprobleme und Ausnahmen zu diagnostizieren und Code zu schreiben, um die Aktivitäten der Benutzer Ihrer App nachzuverfolgen.

Application Insights ist ein erweiterbarer Analysedienst für Webentwickler, der Ihnen dabei hilft, die Leistung und die Verwendung der Liveanwendung zu verstehen. Application Insights unterstützt Java-Apps, die unter Linux, Unix oder Windows ausgeführt werden.

Voraussetzungen

Erforderlich:

Abrufen eines Application Insights-Instrumentationsschlüssels

  1. Melden Sie sich beim Azure-Portal an.

  2. Erstellen Sie im Azure-Portal eine Application Insights-Ressource. Legen Sie den Anwendungstyp auf "Java-Webanwendung" fest.

  3. Suchen Sie den Instrumentationsschlüssel der neuen Ressource. Dieser Schlüssel muss in Kürze in das Codeprojekt eingefügt werden.

    Screenshot: Übersichtsbereich für eine Application Insights-Ressource im Azure-Portal mit hervorgehobenem Instrumentierungsschlüssel

Hinzufügen des Application Insights SDK für Java zu Ihrem Projekt

Wählen Sie Ihren Projekttyp aus.

Wenn Ihr Projekt bereits für die Verwendung von Maven für den Buildprozess eingerichtet ist, fügen Sie Ihrer Datei pom.xml den folgenden Code hinzu. Aktualisieren Sie dann die Projektabhängigkeiten, damit die Binärdateien heruntergeladen werden.

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

Häufig gestellte Fragen

  • Welche Beziehung besteht zwischen den Komponenten -web-auto, -web und -core?

    • applicationinsights-web-auto bietet Ihnen Metriken, die die Anzahl der HTTP-Servletanforderungen und die Antwortzeiten nachverfolgen, indem sie den Application Insights-Servletfilter zur Runtime automatisch registrieren.
    • Mit applicationinsights-web erhalten Sie außerdem Metriken zum Nachverfolgen der Anzahl der HTTP-Servletanforderungen und der Antwortzeiten. Es ist jedoch eine manuelle Registrierung des Application Insights-Servletfilters in Ihrer Anwendung erforderlich.
    • applicationinsights-core bietet Ihnen die reine API, beispielsweise wenn Ihre Anwendung nicht auf Servlets basiert.
  • Wie aktualisiere ich das SDK auf die neueste Version?

    • Ab November 2020 wird für die Überwachung von Java-Anwendungen die Verwendung von Application Insights Java 3.x empfohlen. Weitere Informationen zu ersten Schritten finden Sie unter Application Insights Java 3.x.

Hinzufügen einer Datei vom Typ „ApplicationInsights.xml“

Fügen Sie dem Ressourcenordner in Ihrem Projekt die Datei ApplicationInsights.xml hinzu, oder stellen Sie sicher, dass sie dem Bereitstellungsklassenpfad Ihres Projekts hinzugefügt wird. Kopieren Sie den folgenden XML-Code in die Datei.

Ersetzen Sie den Instrumentationsschlüssel durch den, den Sie aus dem Azure-Portal abgerufen haben.

<?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>

Die Konfigurationsdatei kann sich optional an einem beliebigen Speicherort befinden, auf den Ihre Anwendung Zugriff hat. Die Systemeigenschaft -Dapplicationinsights.configurationDirectory gibt das Verzeichnis an, in dem sich die Datei ApplicationInsights.xml befindet. Eine Konfigurationsdatei unter E:\myconfigs\appinsights\ApplicationInsights.xml wird beispielsweise mit der Eigenschaft -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights" konfiguriert.

  • Der Instrumentationsschlüssel wird zusammen mit jedem Telemetrieelement übermittelt und weist Application Insights an, ihn in Ihrer Ressource anzuzeigen.
  • Die Komponente "HTTP-Anforderung" ist optional. Sie sendet automatisch Telemetriedaten zu Anforderungen und Antwortzeiten zum Portal.
  • Die Ereigniskorrelation ist eine Ergänzung der HTTP-Anforderungskomponente. Sie weist jeder vom Server empfangenen Anforderung einen Bezeichner zu. Anschließend weist sie diesen Bezeichner jedem Telemetrieelement als die Eigenschaft Operation.Id zu. Diese Eigenschaft ermöglicht das Korrelieren der jeder Anforderung zugeordneten Telemetriedaten, indem in Diagnosesuche ein Filter festgelegt wird.

Alternative Methoden zum Festlegen des Instrumentationsschlüssels

Das Application Insights SDK sucht in dieser Reihenfolge nach dem Schlüssel:

  • Systemeigenschaft: -DAPPINSIGHTS_INSTRUMENTATIONKEY=Ihr_Instrumentierungsschlüssel
  • Umgebungsvariable: APPINSIGHTS_INSTRUMENTATIONKEY
  • Konfigurationsdatei:ApplicationInsights.xml

Sie können dies auch per Code festlegen:

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

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

Hinzufügen des Agent

Installieren Sie den Java-Agent zum Erfassen ausgehender HTTP-Aufrufe, für JDBC-Abfragen, Anwendungsprotokollierung und zur besseren Vorgangsbenennung.

Ausführen der Anwendung

Führen Sie sie entweder im Debugmodus auf dem Entwicklungscomputer aus, oder veröffentlichen Sie sie auf Ihrem Server.

Anzeigen Ihrer Telemetriedaten in Application Insights

Kehren Sie zu Ihrer Application Insights-Ressource im Azure-Portal zurück.

HTTP-Anforderungsdaten werden im Übersichtsbereich angezeigt. Wenn sie nicht vorhanden sind, warten Sie einige Sekunden, und wählen Sie dann Aktualisieren aus.

Screenshot: Übersicht über Beispieldaten

Weitere Informationen zu Metriken

Klicken Sie sich durch ein beliebiges Diagramm, um ausführliche aggregierte Metriken anzuzeigen.

Screenshot: Application Insights-Fehlerbereich mit Diagrammen

Instanzdaten

Klicken Sie sich durch einen bestimmten Anforderungstyp, um einzelne Instanzen anzuzeigen.

Screenshot: Drillinto in eine bestimmte Beispielansicht.

Log Analytics: Leistungsfähige Abfragesprache

Wenn sich mehr Daten ansammeln, können Sie Abfragen zum Aggregieren von Daten und zum Ermitteln einzelner Instanzen ausführen. Log Analytics ist ein leistungsfähiges Tool zum Nachvollziehen der Leistung und Nutzung sowie für Diagnosezwecke.

Screenshot: Beispiel für Log Analytics im Azure-Portal

Installieren der App auf dem Server

Jetzt veröffentlichen Sie Ihre App auf dem Server, erlauben deren Nutzung und sehen sich an, wie die Telemetrie im Portal angezeigt wird.

  • Stellen Sie sicher, dass die Firewall der Anwendung das Senden von Telemetrie an die folgenden Ports erlaubt:

    • dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443
  • Wenn ausgehender Datenverkehr über eine Firewall geleitet werden muss, legen Sie die Systemeigenschaften http.proxyHost und http.proxyPort fest.

  • Installieren Sie auf Windows-Servern:

Azure App Service, Azure Kubernetes Service, VM-Konfiguration

Die beste und einfachste Methode zur Überwachung Ihrer Anwendungen, die bei einem der Azure-Ressourcenanbieter ausgeführt werden, ist die Verwendung von Application Insights Java 3.x.

Ausnahmen und Anforderungsfehler

Unbehandelte Ausnahmen und Anforderungsfehler werden automatisch vom Application Insights-Webfilter erfasst.

Zum Sammeln von Daten zu anderen Ausnahmen können Sie Aufrufe von trackException() in Ihren Code einfügen.

Überwachen von Methodenaufrufen und externen Abhängigkeiten

Installieren Sie den Java-Agent für die Protokollierung der angegebenen internen Methoden und Aufrufe über JDBC mit Zeitdaten sowie für die automatische Vorgangsbenennung.

W3C – verteilte Ablaufverfolgung

Das Application Insights Java SDK unterstützt jetzt die verteilte Ablaufverfolgung W3C.

Die eingehende SDK-Konfiguration wird unter Telemetriekorrelation in Application Insights näher erläutert.

Die SDK-Ausgangskonfiguration wird in der Datei AI-Agent.xml definiert.

Leistungsindikatoren

Unter Untersuchen>Metriken finden Sie eine Reihe von Leistungsindikatoren.

Screenshot: Bereich „Metriken“ für eine Application Insights-Ressource im Azure-Portal mit ausgewählter Option zum Verarbeiten privater Bytes

Anpassen der Erfassung von Leistungsindikatoren

Um die Erfassung der Standardgruppe von Leistungsindikatoren zu deaktivieren, fügen Sie unter dem Stammknoten der Datei ApplicationInsights.xml den folgenden Code hinzu:

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

Sammeln weiterer Leistungsindikatoren

Sie können weitere Leistungsindikatoren angeben, die erfasst werden sollen.

JMX-Leistungsindikatoren (von Java Virtual Machine bereitgestellt)
    <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: Der im Application Insights-Portal angezeigte Name
  • objectName: Der JMX-Objektname
  • attribute: Das Attribut des abzurufenden JMX-Objektnamens
  • type (optional): Der Typ des Attributs des JMX-Objekts:
    • Standard: ein einfacher Typ wie „int“ oder „long“.
    • composite: Die Leistungsindikatordaten haben das Format Attribute.Data.
    • tabular: Die Leistungsindikatordaten haben das Format einer Tabellenzeile.
Windows-Leistungsindikatoren

Jeder Windows-Leistungsindikator gehört zu einer Kategorie (genauso wie ein Feld zu einer Klasse gehört). Kategorien können entweder global sein oder nummerierte oder benannte Instanzen haben.

    <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: Der im Application Insights-Portal angezeigte Name
  • categoryName: Die Leistungsindikatorkategorie (Leistungsobjekt), der dieser Leistungsindikator zugeordnet ist
  • counterName: Der Name des Leistungsindikators
  • instanceName: Der Name der Instanz der Leistungsindikatorkategorie oder eine leere Zeichenfolge (""), wenn die Kategorie eine einzelne Instanz enthält. Wenn categoryName auf Process festgelegt ist und der Leistungsindikator, den Sie erfassen möchten, aus dem aktuellen JVM-Prozess stammt, in dem Ihre Anwendung ausgeführt wird, geben Sie "__SELF__" an.

Unix-Leistungsindikatoren

Installieren Sie collectd mit dem Application Insights-Plug-In, um eine Vielzahl von System- und Netzwerkdaten abzurufen.

Abrufen von Benutzer- und Sitzungsdaten

Sie senden nun Telemetriedaten vom Webserver. Um eine Rundumansicht Ihrer Anwendung zu erhalten, können Sie weitere Überwachungsfunktionen hinzufügen:

Senden eigener Telemetriedaten

Nachdem Sie das SDK installiert haben, können Sie die API verwenden, um eigene Telemetriedaten zu senden:

Verfügbarkeitswebtests

Application Insights kann Ihre Website in regelmäßigen Abständen testen, um zu überprüfen, ob sie betriebsbereit ist und gut reagiert.

Erfahren Sie mehr über das Einrichten von Verfügbarkeitswebtests.

Problembehandlung

Informationen finden Sie in dem dedizierten Artikel zur Problembehandlung.

Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst

Application Insights SDKs und -Agents senden Telemetriedaten, die als REST-Aufrufe unserer Erfassungsendpunkte erfasst werden sollen. Sie können die Konnektivität Ihres Webservers oder Anwendungshostcomputers mit den Endpunkten des Erfassungsdiensts testen, indem Sie unformatierte REST-Clients über PowerShell- oder cURL-Befehle verwenden. Weitere Informationen finden Sie unter Problembehandlung bei fehlender Anwendungstelemetrie in Azure Monitor Application Insights.

Untersuchen von Java-Ablaufverfolgungsprotokollen in Application Insights

Wenn Sie für die Ablaufverfolgung Logback oder Log4J (Version 1.2 bzw. 2.0) verwenden, werden Ihre Ablaufverfolgungsprotokolle automatisch an Application Insights gesendet. Hier können Sie sie durchsuchen und untersuchen.

Tipp

Sie müssen den Application Insights-Instrumentierungsschlüssel nur einmal für Ihre Anwendung festlegen. Wenn Sie ein Framework wie Java Spring verwenden, haben Sie den Schlüssel möglicherweise bereits an anderer Stelle in der Konfiguration Ihrer App registriert.

Verwenden des Java-Agents von Application Insights

Standardmäßig erfasst der Application Insights-Java-Agent automatisch die Protokollierung, die auf der Ebene WARN und höher ausgeführt wird.

Sie können den Schwellenwert für die erfasste Protokollierung mithilfe der Datei AI-Agent.xml ändern:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging threshold="info"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Sie können die durch den Java-Agent erfasste Protokollierung mithilfe der Datei AI-Agent.xml deaktivieren:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging enabled="false"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Alternativen

Anstatt den Java-Agent zu verwenden, können Sie diese Anweisungen befolgen.

Installieren des Java SDK

Führen Sie die Anweisungen zum Installieren des Application Insights SDK für Java durch, sofern dies noch nicht geschehen ist.

Hinzufügen von Protokollierungsbibliotheken zu Ihrem Projekt

Wählen Sie die geeignete Methode für Ihr Projekt.

Maven

Wenn Ihr Projekt bereits für die Verwendung von Maven für den Buildprozess eingerichtet ist, fügen Sie einen der folgenden Codeabschnitte Ihrer Datei pom.xml hinzu: Aktualisieren Sie dann die Projektabhängigkeiten, damit die Binärdateien heruntergeladen werden.

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

Wenn Ihr Projekt bereits für die Verwendung von Gradle für Buildprozesse eingerichtet ist, fügen Sie eine der folgenden Zeilen der Gruppe dependencies in der Datei build.gradle hinzu: Aktualisieren Sie dann die Projektabhängigkeiten, damit die Binärdateien heruntergeladen werden.

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

Befolgen Sie die Richtlinien, um das Application Insights Java SDK manuell zu installieren und die JAR-Datei herunterzuladen. Wählen Sie auf der Maven Central-Seite den Link jar im Downloadabschnitt für den entsprechenden Appender aus. Fügen Sie dem Projekt die heruntergeladene JAR-Datei für den Appender hinzu.

Protokollierungstool Download Bibliothek
Logback JAR-Datei für Logback-Appender applicationinsights-logging-logback
Log4J v2. 0 JAR-Datei für Log4J-v2-Appender applicationinsights-logging-log4j2
Log4J v1. 2 JAR-Datei für Log4J-v1.2-Appender applicationinsights-logging-log4j1_2

Hinzufügen des Appenders zu Ihrem Protokollierungsframework

Zum Starten von Ablaufverfolgungen führen Sie den relevanten Codeausschnitt mit der Konfigurationsdatei für Logback oder Log4J zusammen.

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>

Die Application Insights-Appender können von jeder konfigurierten Protokollierung und müssen nicht unbedingt von der Stammprotokollierung referenziert werden (siehe die obigen Codebeispiele).

Untersuchen Ihrer Ablaufverfolgungen im Application Insights-Portal

Nachdem Sie das Projekt so konfiguriert haben, dass Ablaufverfolgungen an Application Insights gesendet werden, können Sie diese Ablaufverfolgungen im Application Insights-Portal im Bereich Suche anzeigen und durchsuchen.

Über Protokollierungen übermittelte Ausnahmen werden im Portal als Ausnahmetelemetrie angezeigt.

Screenshot: Suchbereich für eine Application Insights-Ressource im Azure-Portal

Überwachen von Abhängigkeiten, abgefangene Ausnahmen und Methodenausführungszeiten in Java-Web-Apps

Wenn Sie Ihre Java-Web-App mit dem Application Insights SDK instrumentiert haben, können Sie den Java-Agent ohne Codeänderungen verwenden, um tiefer gehende Erkenntnisse zu erhalten:

  • Abhängigkeiten: Daten über Aufrufe der Anwendung an andere Komponenten, einschließlich:

    • Ausgehende HTTP-Aufrufe: Aufrufe, die über Apache HttpClient, OkHttp und java.net.HttpURLConnection ausgeführt werden, werden erfasst.
    • Redis-Aufrufe: Aufrufe über den Jedis-Client werden erfasst.
    • JDBC-Abfragen: Für MySQL und PostgreSQL gilt: Wenn der Aufruf länger als zehn Sekunden dauert, wird der Abfrageplan gemeldet.
  • Anwendungsprotokollierung: Sie können Ihre Anwendungsprotokolle erfassen und mit HTTP-Anforderungen und anderer Telemetrie korrelieren:

    • Log4j 1.2
    • Log4j2
    • Logback
  • Bessere Vorgangsbenennung: Wird für die Aggregation von Anforderungen im Portal verwendet.

    • Spring: Basiert auf @RequestMapping.
    • JAX-RS: Basiert auf @Path.

Um den Java-Agent zu verwenden, installieren Sie ihn auf Ihrem Server. Ihre Web-Apps müssen mit dem Application Insights Java SDK instrumentiert werden.

Installieren des Application Insights-Agents für Java

  1. Laden Sie auf dem Computer, auf dem Ihr Java-Server ausgeführt wird, den Agent der Version 2.x herunter. Stellen Sie sicher, dass die verwendete Version des 2.x-Java-Agents mit der Version des verwendeten 2.x Application Insights Java SDK übereinstimmt.

  2. Bearbeiten Sie das Startskript des Anwendungsservers, und fügen Sie das folgende JVM-Argument hinzu:

    -javaagent:<full path to the agent JAR file>

    Beispielsweise in Tomcat auf einem Linux-Computer:

    export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"

  3. Starten Sie den Anwendungsserver neu.

Konfigurieren des Agents

Erstellen Sie eine Datei mit dem Namen AI-Agent.xml, und speichern Sie sie im selben Ordner wie die JAR-Datei des Agents.

Legen Sie den Inhalt der XML-Datei fest. Bearbeiten Sie das folgende Beispiel, um Features Ihrer Wahl aufzunehmen oder nicht.

<?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>

Zusätzliche Konfiguration (Spring Boot)

java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar

Um eine neue Azure App Service-Instanz zu erstellen, führen Sie die folgenden Schritte aus:

  1. Wählen Sie Einstellungen>Anwendungseinstellungen aus.

  2. Fügen Sie unter App-Einstellungen ein neues Schlüssel-Wert-Paar hinzu:

    • Schlüssel: JAVA_OPTS
    • Wert: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar

    Der Agent muss als Ressource in Ihrem Projekt enthalten sein, sodass er sich letztendlich im Verzeichnis D:/home/site/wwwroot/ befindet. Sie können sich vergewissern, dass der Agent im richtigen App Service-Verzeichnis enthalten ist, indem Sie zu Entwicklungstools>Erweiterte Tools>Debugging-Konsole wechseln und den Inhalt des Siteverzeichnisses prüfen.

  3. Speichern Sie die Einstellungen, und starten Sie die App neu. Diese Schritte gelten nur für App Services unter Windows.

Hinweis

AI-Agent.xml und die Agent-JAR-Datei sollten sich im selben Ordner befinden. Sie werden häufig zusammen im Ordner /resources des Projekts platziert.

Aktivieren der verteilten W3C-Ablaufverfolgung

Fügen Sie AI-Agent.xml den folgenden Codeausschnitt hinzu:

<Instrumentation>
   <BuiltIn enabled="true">
      <HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
   </BuiltIn>
</Instrumentation>

Hinweis

Der Abwärtskompatibilitätsmodus ist standardmäßig aktiviert. Der Parameter enableW3CBackCompat ist optional und sollte nur zum Deaktivieren des Modus verwendet werden.

Idealerweise wäre dies der Fall, wenn alle Dienste auf neuere Versionen der SDKs aktualisiert wurden, die das W3C-Protokoll unterstützen. Es wird empfohlen, so bald wie möglich auf neuere Versionen der SDKs mit W3C-Unterstützung umzustellen.

Stellen Sie sicher, dass die Konfigurationen für eingehende und ausgehende Vorgänge (Agent) exakt gleich sind.

Anzeigen der Daten

In der Application Insights-Ressource werden aggregierte Remoteabhängigkeiten und Methodenausführungszeiten auf der Kachel „Leistung“ angezeigt.

Um nach den einzelnen Instanzen der Abhängigkeits-, Ausnahmen- und Methodenberichte zu suchen, öffnen Sie die Suche.

Erfahren Sie mehr über die Diagnose von Abhängigkeitsproblemen.

Fragen oder Probleme?

Verwenden Sie die folgenden Ressourcen:

Filtern von Telemetriedaten in einer Java-Web-App

Filter bieten eine Möglichkeit zur Auswahl der Telemetriedaten, die Ihre Java-Web-App an Application Insights sendet. Es gibt einige Standardfilter, die Sie verwenden können. Sie können auch eigene benutzerdefinierte Filter schreiben.

Es folgen die Standardfilter:

  • Schweregrad der Ablaufverfolgung.
  • Bestimmte URLs, Schlüsselwörter oder Antwortcodes
  • Schnelle Antworten Anders ausgedrückt: Anforderungen, auf die Ihre App schnell reagiert hat
  • Bestimmte Ereignisnamen

Hinweis

Filter verzerren die Metriken Ihrer App. Wenn Sie beispielsweise lange Antwortzeiten untersuchen möchten, legen Sie einen Filter fest, der kurze Antwortzeiten ausschließt. Ihnen sollte jedoch klar sein, dass die von Application Insights gemeldeten durchschnittlichen Antwortzeiten langsamer als die tatsächliche Geschwindigkeit sind. Außerdem ist die Anzahl der Anforderungen kleiner als die tatsächliche Anzahl.

Wenn dies von Belang ist, arbeiten Sie stattdessen mit Stichproben.

Filter festlegen

Fügen Sie der Datei ApplicationInsights.xml wie in diesem Beispiel den Abschnitt TelemetryProcessors hinzu:


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

Überprüfen Sie den vollständigen Satz integrierter Prozessoren.

Integrierte Filter

In diesem Abschnitt werden die verfügbaren integrierten Filter erläutert.

Telemetriefilter „Metrik“


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: Durch Trennzeichen getrennte Liste benutzerdefinierter Metriknamen

Telemetriefilter „Seitenaufruf“


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: „Duration“ bezieht sich auf die Dauer des Ladens der Seite. Falls dieser Parameter festgelegt ist, werden Seiten, die schneller als diese Angabe geladen werden, nicht gemeldet.
  • NotNeededNames: Durch Trennzeichen getrennte Liste von Seitennamen
  • NotNeededUrls: Durch Trennzeichen getrennte Liste von URL-Fragmenten. Beispielsweise filtert "home" alle Seiten heraus, deren URL „home“ enthält.

Telemetriefilter „Anforderung“


           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="500"/>
                  <Add name="NotNeededResponseCodes" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>

Filter „Synthetische Quelle“

Filtert alle Telemetriedaten heraus, die Werte in der Eigenschaft SyntheticSource aufweisen. Dazu gehören Anforderungen von Bots, Spidern und Verfügbarkeitstests.

Filtern Sie Telemetriedaten für alle synthetischen Anforderungen heraus:


           <Processor type="SyntheticSourceFilter" />

Filtern Sie Telemetriedaten für bestimmte synthetische Quellen heraus:


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: Durch Trennzeichen getrennte Liste von synthetischen Datenquellennamen

Telemetriefilter „Ereignis“

Filtern Sie benutzerdefinierte Ereignisse heraus, die mit TrackEvent() protokolliert wurden:


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: Durch Trennzeichen getrennte Liste von Ereignisnamen

Telemetriefilter „Ablaufverfolgung“

Filtern Sie mithilfe von TrackTrace() oder einem Protokollierungsframework-Collector protokollierte Protokollablaufverfolgungen heraus:


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • Gültige FromSeverityLevel-Werte sind:

    • OFF: Filtert alle Ablaufverfolgungen heraus.
    • TRACE: Keine Filterung. Entspricht der Ebene TRACE.
    • INFO: Filter die Ebene TRACE heraus.
    • WARN: Filtert TRACE und INFO heraus.
    • ERROR: Filtert WARN, INFO und TRACE heraus.
    • CRITICAL: Filtert alles außer CRITICAL heraus.

Benutzerdefinierte Filter

In den folgenden Abschnitten werden die Schritte zum Erstellen eigener benutzerdefinierter Filter veranschaulicht.

Codieren des Filters

Erstellen Sie in Ihrem Code eine Klasse, die TelemetryProcessor implementiert:


    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;
        }
    }

Aufrufen des Filters in der Konfigurationsdatei

ApplicationInsights.xml sieht jetzt wie folgt aus:



    <ApplicationInsights>
      <TelemetryProcessors>
        <CustomProcessors>
          <Processor type="com.fabrikam.SuccessFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>
      </TelemetryProcessors>
    </ApplicationInsights>

Aufrufen des Filters (Java Spring)

Für Anwendungen, die auf dem Spring Framework basieren, müssen benutzerdefinierte Telemetrieprozessoren in Ihrer Hauptanwendungsklasse als Bean registriert sein. Sie verwenden dann beim Start der Anwendung automatisch das Autowiring.

@Bean
public TelemetryProcessor successFilter() {
      return new SuccessFilter();
}

Sie erstellen eigene Filterparameter in application.properties. Anschließend verwenden Sie das externalisierte Konfigurationsframework von Spring Boot, um diese Parameter an Ihren benutzerdefinierten Filter zu übergeben.

Problembehandlung

Dieser Abschnitt enthält einen Tipp zur Problembehandlung.

Mein Filter funktioniert nicht.

Überprüfen Sie, ob Sie gültige Parameterwerte angegeben haben. Die Dauer muss als ganze Zahl angegeben werden. Ungültige Werte führen dazu, dass der Filter ignoriert wird. Wenn Ihr benutzerdefinierter Filter eine Ausnahme in einem Konstruktor oder einer „Set“-Methode auslöst, wird er ignoriert.

collectd: Linux-Leistungsmetriken in Application Insights (veraltet)

Um Leistungsmetriken für Linux-Systeme in Application Insights zu untersuchen, installieren Sie collectd zusammen mit dem entsprechenden Application Insights-Plug-In. Diese Open Source-Lösung sammelt verschiedene System- und Netzwerkstatistiken.

collectd wird üblicherweise verwendet, wenn Sie Ihren Java-Webdienst bereits mit Application Insights instrumentiert haben. Die Lösung liefert weitere Daten, auf deren Grundlage Sie die Leistung Ihrer Anwendung verbessern oder Probleme diagnostizieren können.

Abrufen des Instrumentationsschlüssels

Öffnen Sie im Azure-Portal die Ressource Application Insights, in der die Daten angezeigt werden sollen. Alternativ können Sie eine neue Ressource erstellen.

Kopieren Sie den Instrumentierungsschlüssel, der die Ressource identifiziert.

Screenshot: Übersichtsbereich für eine Application Insights-Ressource im Azure-Portal mit hervorgehobenem Instrumentierungsschlüssel

Installieren von collectd und des Plug-Ins

Auf Linux-Servercomputern:

  1. Installieren Sie collectd , Version 5.4.0 oder höher.
  2. Laden Sie das collectd-Writer-Plug-In für Application Insights herunter. Beachten Sie die Versionsnummer.
  3. Kopieren Sie die Plug-In-JAR-Datei in /usr/share/collectd/java.
  4. Bearbeiten Sie /etc/collectd/collectd.conf:
    • Stellen Sie sicher, dass das Java-Plug-In aktiviert ist.

    • Aktualisieren Sie den JVMArg-Wert für java.class.path, sodass die folgende JAR-Datei enthalten ist. Aktualisieren Sie die Versionsnummer, sodass sie mit der übereinstimmt, die Sie heruntergeladen haben:

      • /usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
    • Fügen Sie diesen Codeausschnitt mit dem Instrumentierungsschlüssel der Ressource hinzu:

      
           LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter"
           <Plugin ApplicationInsightsWriter>
              InstrumentationKey "Your key"
           </Plugin>
      

      Er ist Teil der Beispielkonfigurationsdatei:

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

Konfigurieren Sie andere collectd-Plug-Ins, die verschiedenste Daten aus unterschiedlichen Quellen sammeln können.

Starten Sie collectd gemäß dem Handbuch neu.

Anzeigen der Daten in Application Insights

Öffnen Sie in Ihrer Application Insights-Ressource Metriken, und fügen Sie Diagramme hinzu. Wählen Sie die Metriken, die angezeigt werden sollen, in der Kategorie Benutzerdefiniert aus.

Standardmäßig werden die Metriken für alle Hostcomputer aggregiert, von denen die Metriken gesammelt wurden. Aktivieren Sie zum Anzeigen der Metriken pro Host im Bereich Diagrammdetails die Option Gruppierung, und wählen Sie dann aus, dass nach CollectD-Host gruppiert werden soll.

Ausschließen des Uploads bestimmter Statistiken

Standardmäßig sendet das Application Insights-Plug-In alle Daten, die von allen aktivierten collectd read-Plug-Ins gesammelt wurden.

So schließen Sie Daten von bestimmten Plug-Ins oder Datenquellen aus

  • Bearbeiten Sie die Konfigurationsdatei.

  • Fügen Sie in <Plugin ApplicationInsightsWriter> Anweisungszeilen wie in der folgenden Tabelle hinzu:

    Anweisung Wirkung
    Exclude disk Schließen Sie alle vom disk-Plug-In gesammelten Daten aus.
    Exclude disk:read,write Schließen Sie die Quellen mit den Namen read und write aus dem disk-Plug-In aus.

Trennen Sie Direktiven mit einem Zeilenumbruch.

Probleme?

Dieser Abschnitt enthält Tipps zur Problembehandlung.

Daten werden im Portal nicht angezeigt.

Probieren Sie diese Optionen aus:

  • Öffnen Sie Search, um zu überprüfen, ob die Rohereignisse empfangen wurden. Manchmal dauert es länger, bis sie im Metrik-Explorer angezeigt werden.
  • Gegebenenfalls müssen Sie Firewallausnahmen für ausgehende Daten festlegen.
  • Aktivieren Sie die Ablaufverfolgung im Application Insights-Plug-In. Fügen Sie diese Zeile in <Plugin ApplicationInsightsWriter>hinzu:
    • SDKLogger true
  • Öffnen Sie ein Terminal, und starten Sie collectd im ausführlichen Modus, um alle gemeldeten Probleme anzuzeigen:
    • sudo collectd -f

Bekanntes Problem

Das Application Insights-Schreib-Plug-In ist mit bestimmten Lese-Plug-Ins nicht kompatibel. Einige Plug-Ins senden manchmal NaN, aber das Application Insights-Plug-In erwartet eine Gleitkommazahl.

  • Symptom: Im collectd-Protokoll werden Fehler angezeigt, die den Text „AI:... SyntaxError: Unerwartetes Token N“ enthalten.
  • Problemumgehung: Schließen Sie Daten aus, die von den problematischen Write-Plug-Ins gesammelt werden.

Die Micrometer-Anwendungsüberwachung misst die Metriken für JVM-basierten Anwendungscode und ermöglicht den Export der Daten in Ihre bevorzugten Überwachungssysteme. In diesem Abschnitt erfahren Sie, wie Sie Micrometer mit Application Insights für Spring Boot- und Spring Boot-fremde Anwendungen verwenden.

Verwenden von Spring Boot 1.5x

Fügen Sie die folgenden Abhängigkeiten zur Datei pom.xml oder build.gradle hinzu.

Folgen Sie diesen Schritten:

  1. Aktualisieren Sie die Datei pom.xml Ihrer Spring Boot-Anwendung, und fügen Sie die folgenden Abhängigkeiten hinzu:

    <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. Aktualisieren Sie die Datei application.properties oder die YML-Datei mit dem Application Insights-Instrumentierungsschlüssel mithilfe der folgenden Eigenschaft:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Erstellen Sie Ihre Anwendung, und führen Sie sie aus.

Mit den oben genannten Schritten sollten mit vorab aggregierten Metriken, die automatisch in Azure Monitor gesammelt werden, sofort loslegen können.

Verwenden von Spring 2.x

Fügen Sie die folgenden Abhängigkeiten zur Datei pom.xml oder build.gradle hinzu.

Folgen Sie diesen Schritten:

  1. Aktualisieren Sie die Datei pom.xml Ihrer Spring Boot-Anwendung, und fügen Sie die folgende Abhängigkeit hinzu:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Aktualisieren Sie die Datei application.properties oder die YML-Datei mit dem Application Insights-Instrumentierungsschlüssel mithilfe der folgenden Eigenschaft:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Erstellen Sie Ihre Anwendung, und führen Sie sie aus.

Mit den oben genannten Schritten sollten mit vorab aggregierten Metriken, die automatisch in Azure Monitor gesammelt werden, sofort loslegen können. Weitere Informationen zum Optimieren von Application Insights Spring Boot Starter finden Sie in der Infodatei auf GitHub.

Standardmetriken:

  • Automatisch konfigurierte Metriken für Tomcat, JVM, Logback-Metriken, Log4J-Metriken, Betriebszeitmetriken, Prozessormetriken, FileDescriptorMetrics
  • Wenn Netflix Hystrix im Klassenpfad vorhanden ist, erhalten wir diese Metriken z. B. ebenfalls.
  • Die folgenden Metriken können durch Hinzufügen der entsprechenden Beans verfügbar sein:
    • CacheMetrics (CaffeineCache, EhCache2, GuavaCache, HazelcastCache und JCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • OkHttp3 Metrics
    • Kafka Metrics

Deaktivieren Sie die automatische Metrikauflistung:

  • JVM-Metriken:
    • management.metrics.binders.jvm.enabled=false
  • Logback-Metriken:
    • management.metrics.binders.logback.enabled=false
  • Betriebszeitmetriken:
    • management.metrics.binders.uptime.enabled=false
  • Prozessormetriken:
    • management.metrics.binders.processor.enabled=false
  • FileDescriptorMetrics:
    • management.metrics.binders.files.enabled=false
  • Hystrix-Metriken, wenn sich die Bibliothek unter classpath befindet:
    • management.metrics.binders.hystrix.enabled=false
  • AspectJ-Metriken, wenn sich die Bibliothek unter classpath befindet:
    • spring.aop.enabled=false

Hinweis

Geben Sie die oben genannten Eigenschaften in der Datei application.properties oder application.yml Ihrer Spring Boot-Anwendung an.

Verwenden von Micrometer für Spring Boot-fremde Webanwendungen

Fügen Sie die folgenden Abhängigkeiten zur Datei pom.xml oder build.gradle hinzu.

Folgen Sie diesen Schritten:

  1. Fügen Sie die folgenden Abhängigkeiten zur Datei pom.xml oder build.gradle hinzu:

        <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. Fügen Sie die Datei ApplicationInsights.xml im Ressourcenordner hinzu, sofern noch nicht geschehen. Weitere Informationen finden Sie unter Hinzufügen einer ApplicationInsights.xml-Datei.

  3. Beispiel-Servlet-Klasse (gibt eine Timer-Metrik aus):

        @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. Beispiel für Konfigurationsklasse:

         @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) {
    
           }
         }
    

Weitere Informationen zu Metriken finden Sie in der Micrometer-Dokumentation.

Weiteren Beispielcode zum Erstellen verschiedener Arten von Metriken finden Sie im offiziellen Micrometer-GitHub-Repository.

Binden weiterer Metriksammlungen

In den folgenden Abschnitten wird gezeigt, wie Sie weitere Metriken sammeln.

SpringBoot/Spring

Erstellen Sie ein Bean der jeweiligen Metrikkategorie. Sie benötigen beispielsweise Guave-Cachemetriken:

    @Bean
    GuavaCacheMetrics guavaCacheMetrics() {
        Return new GuavaCacheMetrics();
    }

Mehrere Metriken sind nicht standardmäßig aktiviert, können aber auf die vorherige Weise gebunden werden. Eine vollständige Liste finden Sie im GitHub-Repository zu Micrometer.

Spring-fremde Apps

Fügen Sie den folgenden Bindungscode zur Konfigurationsdatei hinzu:

    New GuavaCacheMetrics().bind(registry);

Nächste Schritte