Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java ✔️ C#

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

In diesem Artikel wird beschrieben, wie Sie Diagnosedaten in Azure Spring Apps analysieren.

Mithilfe der Diagnosefunktionen von Azure Spring Apps können Sie Protokolle und Metriken mit jedem der folgenden Dienste analysieren:

  • Verwenden Sie Azure Log Analytics. Dabei werden Daten in Azure Storage geschrieben. Beim Exportieren von Protokollen in Log Analytics tritt eine Verzögerung auf.
  • Speichern Sie Protokolle zur Überwachung oder manuellen Überprüfung in einem Speicherkonto. Sie können die Vermerkdauer (in Tagen) angeben.
  • Sie können Protokolle zur Erfassung durch einen Drittanbieterdienst oder durch eine benutzerdefinierte Analyselösung an Event Hubs streamen.

Wählen Sie die Protokollkategorie und die Metrikkategorie aus, die Sie überwachen möchten.

Tipp

Möchten Sie einfach nur Ihre Protokolle streamen? Sehen Sie sich diesen Azure CLI-Befehl an.

Protokolle

Log BESCHREIBUNG
ApplicationConsole Konsolenprotokoll aller Kundenanwendungen.
SystemLogs Zurzeit befinden sich nur Spring Cloud-Konfigurationsserver in dieser Kategorie.
IngressLogs Eingangsprotokolle aller Anwendungen des Kunden, nur Zugriffsprotokolle.
BuildLogs Buildprotokolle aller Anwendungen des Kunden für jede Buildphase.

Metriken

Eine vollständige Liste der Metriken finden Sie im Abschnitt Optionen für Benutzermetriken im Artikel Metriken für Azure Spring Apps.

Zum Einstieg aktivieren Sie einen dieser Dienste, um die Daten empfangen zu können. Weitere Informationen zum Konfigurieren von Log Analytics finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor.

Konfigurieren von Diagnoseeinstellungen

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure Spring Apps-Instanz.

  2. Wählen Sie die Option Diagnoseeinstellungen aus, und wählen Sie dann Diagnoseeinstellung hinzufügen aus.

  3. Geben Sie einen Namen für die Einstellung ein, und wählen Sie dann aus, wohin die Protokolle gesendet werden sollen. Sie können eine beliebige Kombination der folgenden drei Optionen auswählen:

    • In einem Speicherkonto archivieren
    • An einen Event Hub streamen
    • An Log Analytics senden
  4. Wählen Sie die zu überwachende Protokoll- und Metrikkategorie aus, und geben Sie dann die Vermerkdauer (in Tagen) an. Die Vermerkdauer gilt nur für das Speicherkonto.

  5. Wählen Sie Speichern aus.

Hinweis

Zwischen der Ausgabe der Protokolle oder Metriken und der Anzeige in Ihrem Speicherkonto, Ihrem Event Hub oder in Log Analytics kann eine Verzögerung von bis zu 15 Minuten liegen. Wenn die Azure Spring Apps-Instanz gelöscht oder verschoben wurde, wird der Vorgang nicht an die Ressourcen der Diagnoseeinstellungen kaskadiert. Die Ressourcen für Diagnoseeinstellungen müssen manuell gelöscht werden, bevor der Vorgang für das übergeordnete Element – die Azure Spring Apps-Instanz – ausgeführt werden kann. Andernfalls gilt: Wenn eine neue Azure Spring Apps-Instanz mit derselben Ressourcen-ID wie die gelöschte Instanz bereitgestellt oder die Azure Spring Apps-Instanz zurück verschoben wird, erweitern die vorherigen Ressourcen für Diagnoseeinstellungen diese weiterhin.

Anzeigen der Protokolle und Metriken

Es gibt verschiedene Methoden zum Anzeigen von Protokollen und Metriken, wie in den folgenden Abschnitten beschrieben.

Verwenden des Blatts „Protokolle“

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure Spring Apps-Instanz.

  2. Um den Bereich Protokollsuche zu öffnen, wählen Sie Protokolle aus.

  3. Im Suchfeld Tabellen

    • Geben Sie zum Anzeigen von Protokollen eine einfache Abfrage ein, z. B. die folgende:
    AppPlatformLogsforSpring
    | limit 50
    
    • Geben Sie zum Anzeigen von Metriken eine einfache Abfrage ein, z. B. die folgende:
    AzureMetrics
    | limit 50
    
  4. Um das Suchergebnis anzuzeigen, wählen Sie Ausführen aus.

Verwenden von Log Analytics

  1. Wählen Sie im Azure-Portal im linken Bereich Log Analytics aus.

  2. Wählen Sie den Log Analytics-Arbeitsbereich aus, den Sie beim Hinzufügen Ihrer Diagnoseeinstellungen ausgewählt haben.

  3. Um den Bereich Protokollsuche zu öffnen, wählen Sie Protokolle aus.

  4. Im Suchfeld Tabellen:

    • Geben Sie zum Anzeigen von Protokollen eine einfache Abfrage ein, z. B. die folgende:
    AppPlatformLogsforSpring
    | limit 50
    
    • Geben Sie zum Anzeigen von Metriken eine einfache Abfrage ein, z. B. die folgende:
    AzureMetrics
    | limit 50
    
  5. Um das Suchergebnis anzuzeigen, wählen Sie Ausführen aus.

  6. Sie können die Protokolle der jeweiligen Anwendung oder Instanz suchen, indem Sie eine Filterbedingung festlegen:

    AppPlatformLogsforSpring
    | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
    | limit 50
    

    Hinweis

    Für == wird Groß-/Kleinschreibung beachtet, für =~ jedoch nicht.

Weitere Informationen zu der in Log Analytics verwendeten Abfragesprache erhalten Sie unter Azure Monitor-Protokollabfragen. Wenn Sie alle Log Analytics-Protokolle über einen zentralisierten Client abfragen möchten, lesen Sie die Informationen unter Abfragen von Daten in Azure Monitor mit Azure Data Explorer.

Verwenden Ihres Speicherkontos

  1. Suchen Sie im Azure-Portal im linken Navigationsbereich oder im Suchfeld nach Speicherkonten.
  2. Wählen Sie das Speicherkonto aus, das Sie beim Hinzufügen Ihrer Diagnoseeinstellungen ausgewählt haben.
  3. Um den Bereich Blobcontainer zu öffnen, wählen Sie Blobs aus.
  4. Um Anwendungsprotokolle zu überprüfen, suchen Sie nach einem Container mit dem Namen insights-logs-applicationconsole.
  5. Um Anwendungsmetriken zu überprüfen, suchen Sie nach einem Container mit dem Namen insights-metrics-pt1m.

Weitere Informationen zum Senden von Diagnoseinformationen an ein Speicherkonto finden Sie unter Speichern und Anzeigen von Diagnosedaten in Azure Storage.

Verwenden Ihres Event Hubs

  1. Suchen Sie im Azure-Portal im linken Navigationsbereich oder im Suchfeld nach Event Hubs.

  2. Suchen Sie nach dem Event Hub, den Sie beim Hinzufügen Ihrer Diagnoseeinstellungen ausgewählt haben, und wählen Sie ihn aus.

  3. Um den Bereich Event Hub-Liste zu öffnen, wählen Sie Event Hubs aus.

  4. Um Anwendungsprotokolle zu überprüfen, suchen Sie nach einem Event Hub mit dem Namen insights-logs-applicationconsole.

  5. Um Anwendungsmetriken zu überprüfen, suchen Sie nach einem Event Hub mit dem Namen insights-metrics-pt1m.

Weitere Informationen zum Senden von Diagnoseinformationen an einen Event Hub finden Sie unter Streamen von Azure-Diagnosedaten im langsamsten Pfad mithilfe von Event Hubs.

Analysieren der Protokolle

Azure Log Analytics wird mit einer Kusto-Engine ausgeführt, damit Sie Ihre Protokolle zu Analysezwecken abfragen können. Eine kurze Einführung in das Abfragen mithilfe von Kusto finden Sie im Log Analytics-Tutorial .

Anwendungsprotokolle bieten wichtige Informationen und ausführliche Protokolle zur Integrität und Leistung Ihrer Anwendung und zu vielem mehr. In den nächsten Abschnitten finden Sie einige einfache Abfragen, die Ihnen helfen, die aktuellen und früheren Zustände Ihrer Anwendung besser zu verstehen.

Anzeigen von Anwendungsprotokollen aus Azure Spring Apps

Um eine Liste mit Anwendungsprotokollen aus Azure Spring Apps zu überprüfen, sortiert nach Uhrzeit mit den neuesten Protokollen zuerst, führen Sie die folgende Abfrage aus:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| sort by TimeGenerated desc

Anzeigen von Protokolleinträgen mit Fehlern oder Ausnahmen

Um unsortierte Protokolleinträge zu überprüfen, die einen Fehler oder eine Ausnahme enthalten, führen Sie die folgende Abfrage aus:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| where Log contains "error" or Log contains "exception"

Verwenden Sie diese Abfrage, um Fehler zu finden, oder ändern Sie die Abfragebedingungen, um bestimmte Fehlercodes oder Ausnahmen zu suchen.

Anzeigen der Anzahl von Fehlern und Ausnahmen, die von Ihrer Anwendung in der letzten Stunde gemeldet wurden

Um ein Kreisdiagramm zu erstellen, das die Anzahl der Fehler und Ausnahmen darstellt, die in der letzten Stunde von Ihrer Anwendung protokolliert wurden, führen Sie die folgende Abfrage aus:

AppPlatformLogsforSpring
| where TimeGenerated > ago(1h)
| where Log contains "error" or Log contains "exception"
| summarize count_per_app = count() by AppName
| sort by count_per_app desc
| render piechart

Anzeigen von Eingangsprotokolleinträgen, die einen bestimmten Host enthalten

Führen Sie die folgende Abfrage aus, um Protokolleinträge zu überprüfen, die von einem bestimmten Host generiert werden:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and Host == "ingress-asc.test.azuremicroservices.io" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Verwenden Sie diese Abfrage, um Status-, RequestTime- und andere Antworteigenschaften der Eingangsprotokolle dieses bestimmten Hosts zu ermitteln.

Anzeigen von Eingangsprotokolleinträgen für eine bestimmte requestId

Zum Überprüfen von Protokolleinträgen für einen bestimmten requestId-Wert <request_ID> führen Sie die folgende Abfrage aus:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and ReqId == "<request_ID>" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Anzeigen von Buildprotokolleinträgen für eine bestimmte App

Führen Sie die folgende Abfrage aus, um Protokolleinträge für eine bestimmte App während des Buildprozesses zu überprüfen:

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>"
| sort by TimeGenerated

Anzeigen von Buildprotokolleinträgen für eine bestimmte App in einer bestimmten Buildphase

Führen Sie die folgende Abfrage aus, um Protokolleinträge für eine bestimmte App in einer bestimmten Buildphase zu überprüfen. Ersetzen Sie den Platzhalter <app-name> durch den Namen Ihrer Anwendung. Ersetzen Sie den Platzhalter <build-stage> durch einen der folgenden Werte, die für die Phasen des Buildprozesses stehen: prepare, detect, restore, analyze, build, exportoder completion.

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>" and ContainerName == "<build-stage>"
| sort by TimeGenerated

Weitere Informationen zum Abfragen von Anwendungsprotokollen

Azure Monitor bietet umfassende Unterstützung für das Abfragen von Anwendungsprotokollen mithilfe von Log Analytics. Weitere Informationen zu diesem Dienst finden Sie unter Erste Schritte mit Protokollabfragen in Azure Monitor. Weitere Informationen zum Erstellen von Abfragen zur Analyse Ihrer Anwendungsprotokolle finden Sie unter Übersicht über Protokollabfragen in Azure Monitor.

Häufig gestellte Fragen (FAQ)

Wie können mehrzeilige Java-Stapelüberwachungen in eine einzelne Zeile konvertiert werden?

Es gibt eine Möglichkeit, Ihre mehrzeiligen Stapelüberwachungen in eine einzelne Zeile zu konvertieren. Sie können die Java-Protokollausgabe ändern, um Stapelüberwachungsnachrichten neu zu formatieren, sodass Zeilenvorschubzeichen durch ein Token ersetzt werden. Bei Verwendung der Java-Logback-Bibliothek können Sie Stapelüberwachungsnachrichten durch Hinzufügen von %replace(%ex){'[\r\n]+', '\\n'}%nopex neu formatieren:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                level: %level, message: "%logger{36}: %msg", exceptions: "%replace(%ex){'[\r\n]+', '\\n'}%nopex"%n
            </pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

In Log Analytics können Sie das Token anschließend durch Zeilenvorschubzeichen ersetzen, wie hier gezeigt:

AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')

Die gleiche Strategie kann ggf. auch für andere Java-Protokollbibliotheken verwendet werden.

Nächste Schritte