Streamen von Azure Spring Apps-Auftragsprotokollen in Echtzeit (Preview)
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von 3 Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Standardverbrauchs- und dedizierte Plan wird ab dem 30. September 2024 als veraltet gekennzeichnet und nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren vom Standardverbrauchs- und dedizierten Plan von Azure Spring Apps zu Azure Container Apps.
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:
Öffnen Sie das Azure-Portal.
Öffnen Sie Ihre Azure Spring Apps-Dienstinstanz.
Wählen Sie im Navigationsbereich Zugriffssteuerung (IAM) aus.
Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Option Hinzufügen und dann Rollenzuweisung hinzufügen aus.
Suchen Sie auf der Seite Rollenzuweisung hinzufügen in der Liste Name die Zielrolle, und wählen Sie sie und anschließend Weiter aus.
Wählen Sie Mitglieder aus, suchen Sie nach Ihrem Benutzernamen, und wählen Sie diesen dann aus.
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:
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.
Wählen Sie die Registerkarte VNet-Injektion aus.
Ä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.
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 |