Freigeben über


Streamen von Azure Spring Apps-Auftragsprotokollen in Echtzeit (Preview)

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:❌ Basic/Standard ✔️ Enterprise

In diesem Artikel wird beschrieben, wie Sie die Azure CLI zum Abrufen von Echtzeit-Auftragsprotokollen für die Problembehandlung verwenden. Sie können auch Diagnoseeinstellungen verwenden, um Diagnosedaten in Azure Spring Apps zu analysieren. Weitere Informationen finden Sie unter Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen. Weitere Informationen zu Streamingprotokollen finden Sie unter Streamen von Azure Spring Apps-Anwendungskonsolenprotokolle in Echtzeit und Streamen von Azure Spring Apps-Protokollen zu verwalteten Komponenten in Echtzeit.

Voraussetzungen

  • Die Azure CLI mit der Azure Spring Apps-Erweiterung, Version 1.24.0 oder höher Sie können diese Erweiterung mit dem folgenden Befehl installieren: az extension add --name spring.

Zuweisen einer Azure-Rolle

Damit Sie Auftragsprotokolle streamen können, müssen Ihnen die relevanten Azure-Rollen zugewiesen sein. In der folgenden Tabelle ist die erforderliche Rolle und der Vorgang aufgeführt, für den diese Rolle berechtigt ist:

Erforderliche Rolle Vorgänge
Auftragsprotokollleser-Rolle für Azure Spring Apps Microsoft.AppPlatform/Spring/jobs/executions/logstream/action
Microsoft.AppPlatform/Spring/jobs/executions/listInstances/action

Führen Sie die folgenden Schritte aus, um eine Azure-Rolle über das Azure-Portal zuzuweisen:

  1. Öffnen Sie das Azure-Portal.

  2. Öffnen Sie Ihre Azure Spring Apps-Dienstinstanz.

  3. Wählen Sie im Navigationsbereich Zugriffssteuerung (IAM) aus.

  4. Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Option Hinzufügen und dann Rollenzuweisung hinzufügen aus.

    Screenshot: Azure-Portal mit der Seite „Zugriffssteuerung (IAM)“ mit hervorgehobener Option „Rollenzuweisung hinzufügen“

  5. Suchen Sie auf der Seite Rollenzuweisung hinzufügen in der Liste Name die Zielrolle, und wählen Sie sie und anschließend Weiter aus.

    Screenshot: Azure-Portal, in dem die Seite „Rollenzuweisung hinzufügen“ angezeigt wird und der Name „Auftragsprotokollleser-Rolle für Azure Spring Apps“ hervorgehoben ist

  6. Wählen Sie Mitglieder aus, suchen Sie nach Ihrem Benutzernamen, und wählen Sie diesen dann aus.

  7. Wählen Sie Überprüfen und zuweisen aus.

Anzeigen von Protokollfragmenten

Dieser Abschnitt bietet Beispiele für die Verwendung der Azure CLI zum Erzeugen von Protokollfragmenten.

Anzeigen von Protokollfragmenten für eine bestimmte Instanz

Jedes Mal, wenn ein Auftrag ausgelöst wird, wird eine neue Auftragsausführung erstellt. Abhängig von der Parallelitätseinstellung Ihres Auftrags werden auch mehrere Replikate oder Instanzen parallel ausgeführt.

Verwenden Sie den folgenden Befehl, um alle Instanzen in einer Auftragsausführung aufzulisten:

az spring job execution instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --job <job-name> \
    --execution <job-execution-name>

Sie können alle Instanznamen der Auftragsausführung aus der Ausgabe abrufen.

Wenn Sie die Endprotokolle einer bestimmten Instanz anzeigen möchten, verwenden Sie den Befehl az spring job logs mit dem Argument -i/--instance, wie im folgenden Beispiel gezeigt.

az spring job logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <job-name> \
    --execution <job-execution-name> \
    --instance <instance-name>

Anzeigen von Protokollfragmenten für alle Instanzen in einem Befehl

Wenn Sie die Endprotokolle aller Instanzen anzeigen möchten, verwenden Sie das Argument --all-instances, wie im folgenden Beispiel dargestellt. Der Instanzname ist das Präfix jeder Protokollzeile. Wenn mehrere Instanzen vorhanden sind, werden Protokolle für jede Instanz im Batch gedruckt. Auf diese Weise überlappen sich die Protokolle einer Instanz nicht mit den Protokollen einer anderen.

az spring job logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <job-name> \
    --execution <job-execution-name> \
    --all-instances

Fortlaufendes Streamen neuer Protokolle

Standardmäßig gibt az spring job logs nur vorhandene Protokolle aus, die an die Konsole gestreamt werden, und wird dann beendet. Wenn Sie neue Protokolle streamen möchten, fügen Sie das Argument -f/--follow hinzu.

Wenn Sie die Option -f/--follow verwenden, um Endabschnitte von Sofortprotokollen abzurufen, sendet der Azure Spring Apps-Protokollstreamingdienst jede Minute Heartbeatprotokolle an den Client, es sei denn, der Auftrag schreibt konstant Protokolle. Heartbeatprotokollnachrichten verwenden das folgende Format: 2023-12-18 09:12:17.745: No log from server.

Streamen von Protokollen für eine bestimmte Instanz

Verwenden Sie die folgenden Befehle, um Instanznamen und Datenstromprotokolle für eine bestimmte Instanz abzurufen:

az spring job execution instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --job <job-name> \
    --execution <job-execution-name>

az spring job logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <job-name> \
    --execution <job-execution-name> \
    --instance <instance-name> \
    --follow

Streamen von Protokollen für alle Instanzen

Verwenden Sie den folgenden Befehl, um Protokolle für alle Instanzen zu streamen:

az spring job logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <job-name> \
    --execution <job-execution-name> \
    --all-instances \
    --follow

Wenn Sie Protokolle für mehrere Instanzen in einer Auftragsausführung streamen, überlappen sich die Protokolle einer Instanz mit den Protokollen anderer Instanzen.

Streamen von Protokollen in einer VNet-Injektionsinstanz

Bei einer Azure Spring Apps-Instanz, die in einem benutzerdefinierten virtuellen Netzwerk bereitgestellt wird, können Sie standardmäßig über ein privates Netzwerk auf das Protokollstreaming zugreifen. Weitere Informationen finden Sie unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk.

Azure Spring Apps ermöglicht Ihnen außerdem den Zugriff auf Echtzeit-Auftragsprotokolle aus einem öffentlichen Netzwerk.

Hinweis

Durch die Aktivierung des Protokollstreamingendpunkts im öffentlichen Netzwerk wird Ihrem virtuellen Netzwerk eine öffentliche IP-Adresse für eingehenden Datenverkehr hinzugefügt. Seien Sie vorsichtig, wenn dies für Sie ein Problem darstellt.

Verwenden Sie die folgenden Schritte, um einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren:

  1. Wählen Sie die Azure Spring Apps-Dienstinstanz aus, die in Ihrem virtuellen Netzwerk bereitgestellt wird, und wählen Sie dann im Navigationsbereich die Option Netzwerk aus.

  2. Wählen Sie die Registerkarte VNet-Injektion aus.

  3. Ändern Sie den Status von Ressourcen auf Datenebene im öffentlichen Netzwerk in Aktivieren, um einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren. Dieser Vorgang dauert einige Minuten.

    Screenshot: Seite „Netzwerk“ im Azure-Portal mit ausgewählter Registerkarte „VNet-Injektion“ und hervorgehobenem Abschnitt „Problembehandlung“

Nachdem Sie den öffentlichen Endpunkt für den Protokollstream aktiviert haben, können Sie aus einem öffentlichen Netzwerk genau so auf die Auftragsprotokolle zugreifen, wie Sie auf eine normale Instanz zugreifen würden.

Sichern des Datenverkehrs an den öffentlichen Endpunkt für das Protokollstreaming

Das Protokollstreaming für Aufträge verwendet die Azure RBAC, um die Verbindungen mit den Aufträgen zu authentifizieren. Daher können nur Benutzer, die über die richtigen Rollen verfügen, auf die Protokolle zugreifen.

Um die Sicherheit Ihrer Aufträge sicherzustellen, wenn Sie einen öffentlichen Endpunkt für sie verfügbar machen, schützen Sie den Endpunkt, indem Sie den Netzwerkdatenverkehr an Ihren Dienst mit einer Netzwerksicherheitsgruppe filtern. Weitere Informationen finden Sie unter Tutorial: Filtern von Netzwerkdatenverkehr mithilfe einer Netzwerksicherheitsgruppe über das Azure-Portal. Eine Netzwerksicherheitsgruppe enthält Sicherheitsregeln, die eingehenden Netzwerkdatenverkehr an verschiedene Typen von Azure-Ressourcen oder ausgehenden Netzwerkdatenverkehr von diesen zulassen oder verweigern. Für jede Regel können Sie die Quelle und das Ziel, den Port und das Protokoll angeben.

Hinweis

Wenn Sie nach dem Aktivieren eines öffentlichen Endpunkts für den Protokollstream nicht über das Internet auf Auftragsprotokolle in der VNet-Injektionsinstanz zugreifen können, überprüfen Sie Ihre Netzwerksicherheitsgruppe, um festzustellen, ob Sie solchen eingehenden Datenverkehr zugelassen haben.

Die folgende Tabelle zeigt ein Beispiel für eine empfohlene Basisregel: Sie können Befehle wie nslookup mit dem Endpunkt <service-name>.private.azuremicroservices.io verwenden, um die Ziel-IP-Adresse eines Diensts abzurufen.

Priority Name Port Protokoll Quelle Ziel Aktion
100 Regelname 80 TCP Internet Dienst-IP-Adresse Zulassen
110 Regelname 443 TCP Internet Dienst-IP-Adresse Zulassen

Nächste Schritte