Lernprogramm: Erste Schritte mit Überwachung und Protokollierung mithilfe von Logz.io für Java-Anwendungen, die auf Azure ausgeführt werden
In diesem Tutorial erfahren Sie, wie Sie eine klassische Java-Anwendung konfigurieren, um Protokolle zur Erfassung und Analyse an den Dienst Logz.io zu senden. Logz.io bietet eine umfassende Überwachungslösung auf der Grundlage von Elasticsearch, Logstash, Kibana (ELK) und Grafana.
In diesem Tutorial wird davon ausgegangen, dass Sie Log4J oder Logback verwenden. Da diese beiden Bibliotheken für die Protokollierung in Java am gängigsten sind, sollte das Tutorial für die meisten in Azure ausgeführten Anwendungen funktionieren. Falls Sie Ihre Java-Anwendungen bereits mithilfe von Elastic Stack überwachen, erfahren Sie in diesem Tutorial, wie Sie die Konfiguration so ändern, dass der Logz.io-Endpunkt als Ziel verwendet wird.
In diesem Tutorial erfahren Sie, wie Sie:
- Senden von Protokollen aus einer vorhandenen Java-Anwendung an Logz.io
- Senden von Diagnoseprotokollen und Metriken von Azure-Diensten an Logz.io
Voraussetzungen
- Java Developer Kit ab Version 11
- Ein Logz.io-Konto aus dem Azure Marketplace
- Eine vorhandene Java-Anwendung, die Log4J oder Logback verwendet.
Java-Anwendungsprotokolle an Logz.io senden
Als Erstes erfahren Sie, wie Sie Ihre Java-Anwendung mit einem Token konfigurieren, das es ihr ermöglicht, auf Ihr Logz.io-Konto zuzugreifen.
Abrufen Ihres Logz.io-Zugriffstokens
Um Ihren Token zu erhalten, melden Sie sich bei Ihrem Logz.io-Konto an, wählen Sie das Zahnrad-Symbol in der unteren linken Ecke und wählen Sie dann Einstellungen>Token verwalten auswählen und die Token für den Datenversand tab. Kopieren Sie die Standard-Zugangs-Token angezeigt und die Hörer-URL damit Sie sie später verwenden können.
Installieren und Konfigurieren der Logz.io-Bibliothek für Log4J oder Logback
Die Logz.io-Java-Bibliothek steht bei Maven Central zur Verfügung und kann Ihrer App-Konfiguration als Abhängigkeit hinzugefügt werden. Überprüfen Sie die Versionsnummer bei Maven Central, und verwenden Sie in den folgenden Konfigurationseinstellungen die neueste Version.
Falls Sie Maven verwenden, fügen Sie der Datei pom.xml die folgende Abhängigkeit hinzu:
Log4J:
<dependency>
<groupId>io.logz.log4j2</groupId>
<artifactId>logzio-log4j2-appender</artifactId>
<version>2.0.0</version>
</dependency>
Logback:
<dependency>
<groupId>io.logz.logback</groupId>
<artifactId>logzio-logback-appender</artifactId>
<version>2.0.0</version>
</dependency>
Falls Sie Gradle verwenden, fügen Sie Ihrem Buildskript die folgende Abhängigkeit hinzu:
Log4J:
implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'
Logback:
implementation 'io.logz.logback:logzio-logback-appender:2.0.0'
Im nächsten Schritt aktualisieren Sie Ihre Log4J- oder Logback-Konfigurationsdatei.
Log4J:
<Appenders>
<LogzioAppender name="Logzio">
<logzioToken><your-logz-io-token></logzioToken>
<logzioType>java</logzioType>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
</LogzioAppender>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Logzio"/>
</Root>
</Loggers>
Logback:
<configuration>
<!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
<appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
<token><your-logz-io-token></token>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
<logzioType>java</logzioType>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="debug">
<appender-ref ref="LogzioLogbackAppender"/>
</root>
</configuration>
Ersetzen Sie den <your-logz-io-token>
Platzhalter durch Ihr Zugriffstoken und den <your-logz-io-listener-host>
Platzhalter durch den Listenerhost Ihrer Region , z. B. listener.logz.io
. Weitere Informationen zum Ermitteln der Region Ihres Kontos finden Sie unter Kontoregion.
Das Element logzioType
verweist auf ein logisches Feld in Elasticsearch, das dazu dient, unterschiedliche Dokumente voneinander zu trennen. Es ist wichtig, diesen Parameter ordnungsgemäß zu konfigurieren, um das Beste aus Logz.io herauszuholen.
Ein Logz.io "type" ist Ihr Protokollformat - z. B. Apache, NGinx, MySQL - und nicht Ihre Quelle - zum Beispiel: server1
, server2
, server3
. In diesem Tutorial rufen wir den Typ java
auf, da wir Java-Anwendungen konfigurieren und davon ausgehen, dass diese Anwendungen alle das gleiche Format haben.
In komplexeren Szenarien können Sie Ihre Java-Anwendungen zu verschiedenen Typen gruppieren, die jeweils über ein eigenes spezifisches Protokollformat verfügen (konfigurierbar mit Log4J und Logback). Sie könnten zum Beispiel einen spring-boot-monolith
typ und einen spring-boot-microservice
typ.
Testen Sie Ihre Konfiguration und analysieren Sie die Protokolldaten bei Logz.io.
Nach dem Konfigurieren der Logz.io-Bibliothek sollte Ihre Anwendung Protokolle direkt an die Bibliothek senden. Um zu testen, ob alles korrekt funktioniert, rufen Sie die Logz.io-Konsole auf und wählen die Option Logs>Lebendiger Schwanz Registerkarte, dann wählen Sie laufen. Daraufhin sollte eine Meldung wie die folgende angezeigt werden, die bestätigt, dass die Verbindung funktioniert:
Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...
Starten Sie als Nächstes Ihre Anwendung, oder verwenden Sie sie, um Protokolle zu generieren. Die Protokolle sollten direkt auf Ihrem Bildschirm angezeigt werden. Das folgende Beispiel zeigt die ersten Startmeldungen einer Spring Boot-Anwendung:
2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
Da Ihre Protokolle nun von Logz.io verarbeitet werden, können Sie sämtliche Dienste der Plattform nutzen.
Senden von Azure-Dienstdaten an Logz.io
In diesem Abschnitt erfahren Sie, wie Sie Protokolle und Metriken von Ihren Azure-Ressourcen aus an Logz.io senden.
Bereitstellen der Vorlage
Als Erstes muss die Azure-Integrationsvorlage für Logz.io bereitgestellt werden. Die Integration basiert auf einer vorgefertigten Azure-Bereitstellungsvorlage, die alle erforderlichen Pipelinekomponenten einrichtet. Die Vorlage erstellt einen Event Hub-Namespace, einen Event Hub, zwei Speicherblobs und alle erforderlichen Berechtigungen und Verbindungen. Die im Rahmen der automatisierten Bereitstellung eingerichteten Ressourcen können Daten für eine einzelne Azure-Region erfassen und an Logz.io übermitteln.
Suchen Sie im ersten Schritt der Anleitung des Repositorys nach der Schaltfläche Deploy to Azure (In Azure bereitstellen).
Wenn Sie wählen Bereitstellung in Azure, the Benutzerdefinierte Bereitstellung Seite im Azure-Portal mit einer Liste von vorausgefüllten Feldern angezeigt.
In den meisten Feldern sind keine Änderungen erforderlich. Folgende Einstellungen müssen allerdings eingegeben werden:
- Ressourcengruppe: Wählen Sie eine vorhandene Gruppe aus, oder erstellen Sie eine neue.
- Logzio Logs/Metrics Host: Geben Sie die URL des Logz.io-Listeners ein. Sollten Sie sich bei dieser URL nicht sicher sein, überprüfen Sie Ihre Anmelde-URL. Wenn sie
app.logz.io
lautet, verwenden Sielistener.logz.io
(Standardeinstellung). Wenn sieapp-eu.logz.io
lautet, verwenden Sielistener-eu.logz.io
. - Logzio Logs/Metrics Token (Token für Logz.io-Protokolle/Metriken): Geben Sie das Token des Logz.io-Kontos ein, an das Sie Azure-Protokolle oder -Metriken übermitteln möchten. Sie finden dieses Token auf der Kontoseite der Logz.io-Benutzeroberfläche.
Stimmen Sie unten auf der Seite den Bedingungen zu, und wählen Sie Purchase (Kaufen) aus. Die Vorlage wird daraufhin von Azure bereitgestellt. Dies kann ein bis zwei Minuten dauern. Schließlich erscheint oben im Portal die Nachricht "Bereitstellung erfolgreich".
Sie können zur definierten Ressourcengruppe navigieren, um die bereitgestellten Ressourcen zu überprüfen.
Um zu erfahren, wie Sie Folgendes konfigurieren können logzio-azure-serverless
zum Sichern von Daten in Azure Blob Storage, siehe Azure-Aktivitätsprotokolle versenden.
Weiterleiten von Azure-Protokollen und -Metriken an Logz.io
Nachdem Sie die Integrationsvorlage bereitgestellt haben, müssen Sie Azure so konfigurieren, dass Diagnosedaten an den soeben bereitgestellten Event Hub gestreamt werden. Beim Event Hub eingehende Daten werden von der Funktions-App an Logz.io weitergeleitet.
Geben Sie in der Suchleiste Diagnostik, wählen Sie dann Diagnostische Einstellungen.
Wählen Sie in der Ressourcenliste eine Ressource und anschließend Diagnoseeinstellung hinzufügen aus, um den Bereich Diagnoseeinstellungen für diese Ressource zu öffnen.
Geben Sie unter Name einen Namen für Ihre Diagnoseeinstellungen ein.
Wählen Sie An einen Event Hub streamen und anschließend Konfigurieren aus, um den Bereich Event Hub auswählen zu öffnen.
Wählen Sie Ihren Event Hub aus:
- Namespace des Ereignis-Hubs auswählen: Wählen Sie den Namespace, der mit Logzio (
LogzioNS6nvkqdcci10p
, zum Beispiel). - Name des Ereignishubs auswählen: Für Protokolle wählen Sie einblicke-operationen-logs und für Metriken wählen Sie einblicke-operationelle-metriken.
- Name der Ereignis-Hub-Policy auswählen: Wählen Sie LogzioSharedAccessKey.
- Namespace des Ereignis-Hubs auswählen: Wählen Sie den Namespace, der mit Logzio (
Wählen Sie OK aus, um zum Bereich Diagnoseeinstellungen zurückzukehren.
Wählen Sie im Abschnitt „Protokoll“ die zu streamenden Daten und anschließend Speichern aus.
Die ausgewählten Daten werden nun an den Event Hub gestreamt.
Visualisieren Ihrer Daten
Geben Sie als Nächstes Ihren Daten etwas Zeit, von Ihrem System zu Logz.io zu gelangen, und öffnen Sie dann Kibana. Sie sollten die Daten (mit dem Typ eventhub
) Ihre Dashboards zu füllen. Weitere Informationen zum Erstellen von Dashboards finden Sie unter Kibana - Erstellen von Dashboards.
Von dort aus können Sie bestimmte Daten auf der Registerkarte Discover (Entdecken) abfragen oder Kibana-Objekte erstellen, um Ihre Daten auf der Registerkarte Visualize (Visualisieren) zu visualisieren.
Bereinigen von Ressourcen
Wenn Sie die in diesem Tutorial erstellten Azure-Ressourcen nicht mehr benötigen, können Sie sie mithilfe des folgenden Befehls löschen:
az group delete --name <resource group>
Nächste Schritte
In diesem Tutorial haben Sie gelernt, wie Sie Ihre Java-Anwendung und Azure-Dienste so konfigurieren, dass Protokolle und Metriken an Logz.io gesendet werden.
Im nächsten Artikel erfahren Sie mehr zur Überwachung Ihrer Anwendung unter Verwendung von Event Hub: