Protokollierung für Containergruppen und Instanzen mit Azure Monitor-Protokollen

Log Analytics-Arbeitsbereiche bieten einen zentralen Ort zum Speichern und Abfragen von Protokolldaten – sowohl für Azure-Ressourcen als auch für lokale Ressourcen und Ressourcen in anderen Clouds. In Azure Container Instances ist die Unterstützung für das Senden von Protokollen und Ereignisdaten an Azure Monitor-Protokolle bereits integriert.

Wenn Sie Containergruppenprotokoll- und Ereignisdaten an Azure Monitor Protokolle senden möchten, geben Sie beim Konfigurieren einer Containergruppe einen vorhandenen Log Analytics Arbeitsbereichs-ID und einen Arbeitsbereichsschlüssel an.

In den folgenden Abschnitten wird beschrieben, wie Sie eine für die Protokollierung konfigurierte Containergruppe erstellen und Protokolle abfragen. Sie können eine Containergruppe auch mit einer Arbeitsbereichs-ID und einem Arbeitsbereichsschlüssel aktualisieren, um die Protokollierung zu aktivieren.

Note

Dieser Artikel wurde kürzlich aktualisiert, um den Begriff Azure Monitor-Protokolle anstelle von Log Analytics aufzunehmen. Protokolldaten werden immer noch in einem Log Analytics-Arbeitsbereich gespeichert und weiterhin mit dem gleichen Log Analytics-Dienst erfasst und analysiert. Die Terminologie hat sich geändert, um der Rolle von Protokollen in Azure Monitor besser Rechnung zu tragen. Weitere Informationen finden Sie unter Terminologieänderungen bei Azure Monitor.

Prerequisites

Um die Protokollierung in Ihren Containerinstanzen zu aktivieren, benötigen Sie die folgenden Voraussetzungen:

Log Analytics-Anmeldeinformationen abrufen

Azure Container Instances benötigt die Berechtigung zum Senden von Daten an Ihren Log Analytics Arbeitsbereich. Um diese Berechtigung zu erteilen und die Protokollierung zu aktivieren, müssen Sie beim Erstellen der Containergruppe die Log Analytics Arbeitsbereichs-ID und einen der zugehörigen Schlüssel (primär oder sekundär) angeben.

Important

In diesem Abschnitt wird die ältere Log Analytics Integration beschrieben, die den Arbeitsbereichsschlüssel erfordert. Die Legacy-Integration hat die folgenden Einschränkungen:

  • Der Log Analytics Arbeitsbereich muss öffentlich zugänglich sein (private Endpunkte werden nicht unterstützt).
  • Die lokale Authentifizierung muss im Arbeitsbereich aktiviert sein.

Für eine umfassendere Integration, die private Endpunkte unterstützt, sollten Sie stattdessen Diagnoseeinstellungen verwenden.

Um die Log Analytics Arbeitsbereichs-ID und den Primärschlüssel abzurufen, verwenden Sie die Azure CLI:

# Get the workspace ID
az monitor log-analytics workspace show \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query customerId \
    --output tsv

# Get the primary shared key
az monitor log-analytics workspace get-shared-keys \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query primarySharedKey \
    --output tsv

Containergruppe erstellen

Nachdem Sie nun über die Log Analytics-Arbeitsbereichs-ID und den Primärschlüssel verfügen, können Sie eine protokollierungsfähige Containergruppe erstellen.

Die folgenden Beispiele veranschaulichen zwei Möglichkeiten zum Erstellen einer Containergruppe, die aus einem einzelnen fluentd-Container besteht: Azure CLI und Azure CLI mit einer YAML-Vorlage. Der Fluentd-Container erzeugt in seiner Standardkonfiguration mehrere Ausgabezeilen. Da diese Ausgabe an Ihren Log Analytics Arbeitsbereich gesendet wird, eignet sich dies gut zum Anzeigen und Abfragen von Protokollen.

Bereitstellen mit Azure CLI

Verwenden Sie zum Bereitstellen mit der Azure CLI im Befehl az container create die Parameter --log-analytics-workspace und --log-analytics-workspace-key. Ersetzen Sie die beiden Arbeitsbereichswerte durch die Werte, die Sie im vorherigen Schritt erhalten haben (und den Ressourcengruppennamen aktualisieren), bevor Sie den folgenden Befehl ausführen.

Note

Im folgenden Beispiel wird ein öffentliches Container-Image von Docker Hub abgerufen. Es wird empfohlen, einen Pullschlüssel einzurichten, um sich mit einem Docker Hub Konto zu authentifizieren, anstatt eine anonyme Pullanforderung zu erstellen. Um die Zuverlässigkeit beim Arbeiten mit öffentlichen Inhalten zu verbessern, importieren und verwalten Sie das Image in einer privaten Azure Containerregistrierung. Erfahren Sie mehr über die Arbeit mit öffentlichen Images.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Bereitstellen mit YAML

Verwenden Sie diese Methode, wenn Sie containergruppen mit YAML bereitstellen möchten. Im folgenden YAML wird eine Containergruppe mit einem einzelnen Container definiert. Kopieren Sie das YAML in eine neue Datei und ersetzen Sie dann LOG_ANALYTICS_WORKSPACE_ID und LOG_ANALYTICS_WORKSPACE_KEY durch die Werte, die Sie im vorherigen Schritt erhalten haben. Speichern Sie die Datei als deploy-aci.yaml.

Note

Im folgenden Beispiel wird ein öffentliches Container-Image von Docker Hub abgerufen. Es wird empfohlen, einen Pullschlüssel einzurichten, um sich mit einem Docker Hub Konto zu authentifizieren, anstatt eine anonyme Pullanforderung zu erstellen. Um die Zuverlässigkeit beim Arbeiten mit öffentlichen Inhalten zu verbessern, importieren und verwalten Sie das Image in einer privaten Azure Containerregistrierung. Erfahren Sie mehr über die Arbeit mit öffentlichen Images.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

Führen Sie als Nächstes den folgenden Befehl aus, um die Containergruppe bereitzustellen. Ersetzen Sie myResourceGroup sie durch eine Ressourcengruppe in Ihrem Abonnement (oder erstellen Sie zuerst eine Ressourcengruppe mit dem Namen "myResourceGroup"):

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Sie sollten eine Antwort von Azure erhalten, die Bereitstellungsdetails kurz nach dem Ausgeben des Befehls enthält.

Protokolle anzeigen

Nachdem Sie die Containergruppe bereitgestellt haben, kann es mehrere Minuten (bis zu 10) dauern, bis die ersten Protokolleinträge im Azure-Portal angezeigt werden.

So zeigen Sie die Protokolle der Containergruppe in der ContainerInstanceLog_CL Tabelle an:

  1. Navigieren Sie im Azure Portal zu Ihrem Log Analytics Arbeitsbereich.
  2. Wählen Sie unter "Allgemein" die Option "Protokolle" aus.
  3. Geben Sie die folgende Abfrage ein: ContainerInstanceLog_CL | limit 50
  4. Wählen Sie "Ausführen" aus.

Sie sollten mehrere Ergebnisse sehen, die von der Abfrage ausgegeben werden. Wenn zunächst keine Ergebnisse angezeigt werden, warten Sie einige Minuten, und wählen Sie dann die Schaltfläche "Ausführen " aus, um die Abfrage erneut auszuführen. Standardmäßig werden Protokolleinträge im Tabellenformat angezeigt. Anschließend können Sie eine Zeile erweitern, um den Inhalt eines einzelnen Protokolleintrags anzuzeigen.

Protokollsuche-Ergebnisse im Azure-Portal

Anzeigen von Ereignissen

Sie können auch Ereignisse für Containerinstanzen im Azure-Portal anzeigen. Ereignisse umfassen den Zeitpunkt, zu dem die Instanz erstellt wird und wann sie gestartet wird. So zeigen Sie die Ereignisdaten in der Tabelle ContainerEvent_CL an:

  1. Navigieren Sie im Azure Portal zu Ihrem Log Analytics Arbeitsbereich.
  2. Wählen Sie unter "Allgemein" die Option "Protokolle" aus.
  3. Geben Sie die folgende Abfrage ein: ContainerEvent_CL | limit 50
  4. Wählen Sie "Ausführen" aus.

Sie sollten mehrere Ergebnisse sehen, die von der Abfrage ausgegeben werden. Wenn zunächst keine Ergebnisse angezeigt werden, warten Sie einige Minuten, und wählen Sie dann die Schaltfläche "Ausführen " aus, um die Abfrage erneut auszuführen. Standardmäßig werden Einträge im Tabellenformat angezeigt. Anschließend können Sie eine Zeile erweitern, um den Inhalt eines einzelnen Eintrags anzuzeigen.

Ergebnisse der Ereignissuche im Azure-Portal

Containerprotokolle abfragen

Azure Monitor Protokolle enthalten eine umfangreiche Abfragesprache zum Abrufen von Informationen aus potenziell Tausenden von Protokollausgabezeilen.

Die grundlegende Struktur einer Abfrage ist die Quelltabelle (in diesem Artikel ContainerInstanceLog_CL oder ContainerEvent_CL) gefolgt von einer Reihe von Operatoren, die durch das Pipezeichen (|) getrennt sind. Sie können mehrere Operatoren verketten, um die Ergebnisse einzugrenzen und erweiterte Funktionen auszuführen.

Fügen Sie zum Anzeigen von Beispielabfrageergebnissen die folgende Abfrage in das Abfragetextfeld ein, und wählen Sie die Schaltfläche Ausführen aus, um die Abfrage auszuführen. Diese Abfrage zeigt alle Protokolleinträge an, deren Feld „Message“ das Wort „warn“ enthält:

ContainerInstanceLog_CL
| where Message contains "warn"

Komplexere Abfragen werden ebenfalls unterstützt. Diese Abfrage zeigt beispielsweise nur die Protokolleinträge für die Containergruppe „mycontainergroup001“ an, die innerhalb der letzten Stunde generiert wurden:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Protokollschema

Weitere Informationen zum Azure Monitor Legacyschema für Log Analytics finden Sie in legacy Log Analytics Tabellen.

Diagnoseeinstellungen verwenden

Verwenden Sie Diagnoseeinstellungen, um Containergruppenprotokolle und -ereignisse an Log Analytics weiterzuleiten. Dieses Feature bietet mehrere Vorteile gegenüber der in diesem Artikel beschriebenen Legacyintegration:

  • Unterstützung privater Endpunkte – funktioniert mit Log Analytics Arbeitsbereichen, die private Endpunkte verwenden.
  • Kein Arbeitsbereichsschlüssel erforderlich – Azure Resource Manager behandelt die Authentifizierung, sodass Sie keine Arbeitsbereichsschlüssel verwalten oder drehen müssen.
  • Azure Monitor-Standardtabellen – Protokolle werden statt in benutzerdefinierte Protokolltabellen in Azure Monitor-Standardtabellen geschrieben.

Weitere Informationen finden Sie in Azure Monitor Log Analytics Tabellen.

Nächste Schritte

Azure Monitor Protokolle

Weitere Informationen zum Abfragen von Protokollen und Konfigurieren von Warnungen in Azure Monitor-Protokollen finden Sie in den folgenden Themen:

Überwachen von Container-CPU und -Arbeitsspeicher

Informationen zur Überwachung der CPU- und Arbeitsspeicherressourcen von Containerinstanzen finden Sie unter folgendem Link: