Teilen über


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.

Um Containergruppenprotokolle und -ereignisdaten an Azure Monitor-Protokolle zu senden, geben Sie beim Konfigurieren einer Containergruppe eine ID und den Arbeitsbereichsschlüssel eines vorhandenen Log Analytics-Arbeitsbereichs an.

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

Hinweis

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.

Voraussetzungen

Zum Aktivieren der Protokollierung in Ihren Containerinstanzen müssen Sie die folgenden Voraussetzungen erfüllen:

Abrufen der Log Analytics-Anmeldeinformationen

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

So erhalten Sie die Log Analytics-Arbeitsbereichs-ID und den Primärschlüssel:

  1. Navigieren Sie im Azure-Portal zu Ihrem Log Analytics-Arbeitsbereich.
  2. Wählen Sie unter Einstellungen die Option Agent-Verwaltung aus.
  3. Notieren Sie sich Folgendes:
    • Arbeitsbereichs-ID
    • Primärschlüssel

Erstellen einer Containergruppe

Mit der Log Analytics-Arbeitsbereichs-ID und dem Primärschlüssel können Sie nun eine protokollierungsfähige Containergruppe erstellen.

In den folgenden Beispielen werden zwei Möglichkeiten zum Erstellen einer Containergruppe gezeigt, die aus einem einzelnen fluentd-Container besteht: Azure CLI und Azure CLI mit einer YAML-Vorlage. Der fluentd-Container generiert mehrere Ausgabezeilen in der Standardkonfiguration. Da diese Ausgabe an Ihren Log Analytics-Arbeitsbereich gesendet wird, eignet sie sich gut zur Veranschaulichung der Anzeige und Abfrage von Protokollen.

Bereitstellen über die Azure-Befehlszeilenschnittstelle

Für eine Bereitstellung über die Azure-Befehlszeilenschnittstelle geben Sie im Befehl az container create die Parameter --log-analytics-workspace und --log-analytics-workspace-key an. Ersetzen Sie die beiden Arbeitsbereichswerte durch die Werten, die Sie im vorherigen Schritt erhalten haben (und aktualisieren Sie den Ressourcengruppennamen), bevor Sie den folgenden Befehl ausführen.

Hinweis

Im folgenden Beispiel wird ein öffentliches Container-Image von Docker Hub abgerufen. Es wird empfohlen, ein Pullgeheimnis für die Authentifizierung mithilfe eines Docker Hub-Kontos einrichten, anstatt einen anonymen Pull Request zu verwenden. Um die Zuverlässigkeit bei der Arbeit mit öffentlichen Inhalten zu verbessern, sollten Sie das Image in eine private Azure-Containerregistrierung importieren und dort verwalten. 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 lieber mit YAML bereitstellen möchten. Der folgende YAML-Code definiert eine Containergruppe mit einem einzelnen Container. Kopieren Sie den YAML-Code in eine neue Datei, und ersetzen Sie LOG_ANALYTICS_WORKSPACE_ID und LOG_ANALYTICS_WORKSPACE_KEY durch die im vorherigen Schritt erhaltenen Werte. Speichern Sie die Datei unter dem Namen deploy-aci.yaml.

Hinweis

Im folgenden Beispiel wird ein öffentliches Container-Image von Docker Hub abgerufen. Es wird empfohlen, ein Pullgeheimnis für die Authentifizierung mithilfe eines Docker Hub-Kontos einrichten, anstatt einen anonymen Pull Request zu verwenden. Um die Zuverlässigkeit bei der Arbeit mit öffentlichen Inhalten zu verbessern, sollten Sie das Image in eine private Azure-Containerregistrierung importieren und dort verwalten. 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 durch eine Ressourcengruppe in Ihrem Abonnement (oder erstellen Sie zuerst eine Ressourcengruppe namens „myResourceGroup“):

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

Sie sollten kurz nach Ausgabe des Befehls eine Antwort von Azure mit den Bereitstellungsdetails erhalten.

Anzeigen von Protokollen

Nach der Bereitstellung der Containergruppe kann es bis zu 10 Minuten dauern, bis die ersten Protokolleinträge im Azure-Portal angezeigt werden.

So zeigen Sie die Protokolle der Containergruppen in der Tabelle ContainerInstanceLog_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: ContainerInstanceLog_CL | limit 50.
  4. Wählen Sie Ausführen aus.

Von der Abfrage sollten mehrere Ergebnisse angezeigt werden. Falls anfangs 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. Protokolleinträge werden standardmäßig im Format Tabelle angezeigt. Sie können dann eine Zeile erweitern, um den Inhalt eines einzelnen Protokolleintrags anzuzeigen.

Protokollsuchergebnisse im Azure-Portal

Anzeigen von Ereignissen

Sie können auch Ereignisse für Containerinstanzen im Azure-Portal anzeigen. Die Ereignisse beinhalten den Erstellungszeitpunkt und die Startzeit der Instanz. 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.

Von der Abfrage sollten mehrere Ergebnisse angezeigt werden. Falls anfangs 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. Einträge werden standardmäßig im Tabellenformat angezeigt. Sie können dann eine Zeile erweitern, um den Inhalt eines einzelnen Eintrags anzuzeigen.

Ereignissuchergebnisse im Azure-Portal

Abfragen von Containerprotokollen

Azure Monitor-Protokolle beinhalten eine umfassende Abfragesprache, um Informationen aus Tausenden von Protokollausgabezeilen abzurufen.

Die Grundstruktur einer Abfrage ist die Quelltabelle (in diesem Artikel ContainerInstanceLog_CL oder ContainerEvent_CL), gefolgt von einer Reihe von Operatoren, die durch einen senkrechten Strich (|) 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

Informationen zum Legacyschema von Azure Monitor für Log Analytics finden Sie in Legacy Log Analytics-Tabellen.

Verwenden von Azure-Diagnoseeinstellungen

Die neueren Tabellen erfordern die Verwendung von Diagnoseeinstellungen, um Informationen an Log Analytics weiterzuleiten. Das Feature „Diagnoseeinstellungen“ für Containerinstanzen befindet sich in der öffentlichen Vorschau und kann über Vorschaufeatureoptionen im Azure-Portal aktiviert werden.

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: