Cloud Logging mit Container-Optimized OS verwenden

Container-Optimized OS umfasst einen Logging-Agent, der einige System- und Containerlogs nach Cloud Logging exportiert. Bis zu Container-Optimized OS 101 wurde für x86-basierte Container-Optimized OS-Images ein auf gcloud basierendes Container-Logging-Agent verwendet. Container-Optimized OS 105 begann, eine alternative Logging-Agent-Implementierung, Fluent-Bit, auszuliefern. Ab Container-Optimized OS 109 ist der Fluent-Bit-Logging-Agent die Standardeinstellung. Der Legacy-Logging-Agent Heatmap wird in Container-Optimized OS 113 entfernt.

Alle Versionen von Arm-basierten Container-Optimized OS-Images enthalten den Fluent-Bit-Logging-Agent.

Logging-Agent aktivieren

Der Logging-Agent ist standardmäßig deaktiviert. Sie können dieses Feature aktivieren, wenn Sie eine neue Instanz erstellen oder eine vorhandene Instanz aktualisieren.

Zugriffsanforderungen

Cloud Logging bietet IAM-Rollen, mit denen Sie den entsprechenden Zugriff gewähren können. Zum Ansehen der Logs in einem Projekt benötigen Sie die Rolle roles/logging.viewer und Anwendungen müssen die Berechtigung zum Schreiben von Logs haben. Sie können diese Berechtigung gewähren, indem Sie dem Dienstkonto für eine Anwendung die IAM-Rolle roles/logging.logWriter zuweisen.

Weitere Informationen zu Berechtigungen und Rollen finden Sie unter Vordefinierte Rollen.

Instanz mit aktiviertem Logging-Agent erstellen

Console

Gehen Sie wie folgt vor, um eine Compute Engine-Instanz unter Container-Optimized OS mit aktiviertem Fließ-Bit-Logging-Agent auszuführen:

  1. Öffnen Sie in der Google Cloud Console die Seite zum Erstellen einer Compute Engine-Instanz.

    Neue Compute Engine-Instanz erstellen

  2. Geben Sie unter Name einen Namen für Ihre Instanz an.

  3. Wählen Sie im Abschnitt Bootlaufwerk ein Container-Optimized OS-Image aus.

  4. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, Einzelmandanten, um weitere Optionen einzublenden.

  5. Scrollen Sie auf dem Tab Verwaltung zum Abschnitt Metadaten. Fügen Sie einen neuen Metadateneintrag mit google-logging-enabled als Schlüssel und true als Wert hinzu.

  6. Geben Sie optional weitere Optionen für Ihren Anwendungsfall an. Weitere Informationen finden Sie unter Instanzen erstellen und konfigurieren.

  7. Klicken Sie auf Erstellen, um die Instanz zu erstellen und zu starten.

gcloud

Um eine Compute Engine-Instanz unter Container-Optimized OS mit aktiviertem Logging-Agent auszuführen, verwenden Sie den Befehl gcloud compute instances create und fügen Sie google-logging-enabled=true in die Metadaten ein. Beispiel:

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Ersetzen Sie Folgendes:

  • instance-name ist der Name Ihrer VM-Instanz.
  • compute-zone ist die Computing-Zone für Ihre Instanz.

Weitere Informationen zum Befehl gcloud finden Sie in der Referenzdokumentation zu gcloud computeinstances create. Weitere Informationen zum Erstellen von Container-Optimized OS-Instanzen finden Sie unter Instanzen erstellen und konfigurieren.

Logging-Agent auswählen

x86-basierte Container-Optimized OS 105- und 109-Images liefern zwei Implementierungen des Logging-Agents: gcloud (Legacy) und Fluent-Bit. Container-Optimized OS 105 verwendet standardmäßig gcloud und Container-Optimized OS 109 standardmäßig Fluent-Bit. Mit dem Metadateneintrag google-logging-use-fluentbit können Sie das Standardverhalten ändern.

Wenn Sie den Logging-Agent mit fließenden Bits unter Container-Optimized OS 105 verwenden möchten, setzen Sie den Wert für google-logging-use-fluentbit auf true.

Wenn Sie den gcloud-Logging-Agent unter Container-Optimized OS 109 verwenden möchten, setzen Sie den Wert für google-logging-use-fluentbit auf false.

Logging-Agent in Projektmetadaten aktivieren

Ab Meilenstein 97 kann das Logging in den Projektmetadaten aktiviert werden:

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

Zugriffslogs

Console

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz mit Container-Optimized OS, über die Sie auf Logs zugreifen möchten.

  3. Klicken Sie im Abschnitt Logs auf Cloud Logging.

  4. Dadurch wird der Log-Explorer für die angegebene Instanz geöffnet. Weitere Informationen finden Sie unter Log-Explorer verwenden.

gcloud

Verwenden Sie den gcloud logging read-Befehl, um auf Logs zuzugreifen. Beispiel:

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

Ersetzen Sie Folgendes:

  • instance-id ist die ID Ihrer VM-Instanz.

Dieser Befehl versucht, Logs aus der VM-Instanz mit instance-id zu lesen. Dabei beträgt die Höchstzahl 10 Logs, die im JSON-Format vorliegen und höchsten 30 Tage alt sind.

Weitere Informationen zum gcloud-Befehl finden Sie in derReferenzdokumentation zu gcloud logging read.

Funktionsweise

Der Logging-Agent ist standardmäßig so konfiguriert, dass Logs von bestimmten systemkritischen Diensten und Nutzeranwendungscontainern an das Cloud Logging-Back-End gesendet werden. Dazu gehören Logs aus Docker-Containern, ausgewählte systemd-Dienste, Audit-Logs, Journal-Logfehler usw. Die vollständige Konfiguration für das Standard-Logging finden Sie in der Konfigurationsquelle für Container-Optimized OS (x86-Images und Arm-Images).

Bei x86-Images von Container-Optimized OS 105 und älter ist der Logging-Agent der containerisierte Legacy-Logging-Agent von Google Cloud Observability. Der Docker-Befehl zum Starten des Logging-Agents ist in der Quelle für den Stackdriver-Logging-Dienst "systemd" von Container-Optimized OS definiert. Die Version des ausgeführten Container-Agents ist im Quellverzeichnis "app-admin/Stackdriver" von Container-Optimized OS definiert.

Für ARM-Images aller Versionen und x86-Images für Container-Optimized OS 109 und höher ist der Logging-Agent ein integriertes Betriebssystempaket namens fluent-bit. Der Agent ist in das Betriebssystem integriert und wird zusammen mit den Betriebssystem-Images aktualisiert.

Bekannte Einschränkungen

Kompatibilität mit dem gcplogs-Treiber

Wenn ab Meilenstein 89 der in Container-Optimized OS enthaltene Logging-Agent und der Docker-Logging-Treiber gcplogs für einen oder mehrere Container aktiviert sind, kann eine übermäßige Anzahl an Warnlogs vom enthaltenen Logging-Agent ausgegeben werden. Dies kann zu Lograuschen und/oder erhöhten Gebühren für Cloud Logging führen.

Als Behelfslösung nutzen Sie nicht gcplogs als Docker-Logging-Treiber, sondern den von Container-Optimized OS konfigurierten Standardtreiber. Beachten Sie, dass der in Container-Optimized OS enthaltene Logging-Agent Containerlogs nach Cloud Logging exportiert, sodass es unnötig ist, beide Lösungen gleichzeitig zu verwenden.

Kompatibilität der Logging-Agent-Konfiguration

Der Logging-Agent ist ein Heatmap-basierter Container auf x86-basierten Container-Optimized OS-Images und ein Fluent-Bit-Binärprogramm auf Arm-basierten Container-Optimized OS-Images. Die Konfigurationen der beiden Agents sind nicht kompatibel. Dies ist kein Problem, wenn Sie nur die Standard-Logging-Konfiguration verwenden, die in die Betriebssystem-Images integriert ist. Wenn Sie jedoch eine benutzerdefinierte Logging-Konfiguration haben, kann es bei der Migration von Arbeitslasten zu Images, die auf einer anderen Architektur basieren, oder zu einer neueren Version von Container-Optimized OS zu Fehlern kommen.

Verweise

  • Dokumentation zum Legacy-Logging-Agent von Google Cloud für die Beobachtbarkeit. Der in Container-Optimized OS enthaltene containerisierte Logging-Agent ist eine Teilmenge des Legacy-Logging-Agents. Daher kann diese Dokumentation allgemeine Informationen zum Agent enthalten, die nicht in den Bereich von Container-Optimized OS fallen.
  • Google Cloud-Dokumentation zur Beobachtbarkeit Startseite der Dokumentation zur Beobachtbarkeit von Google Cloud; kann als Kontext nützlich sein