Container-Optimized OS enthält einen Logging-Agent, der einige System- und Containerlogs nach Cloud Logging exportiert. Bis zu Container-Optimized OS 101 wurde in x86-basierten Container-Optimized OS-Images ein containerisierter Logging-Agent auf Basis von fluentd verwendet. Mit Container-Optimized OS 105 wurde eine alternative Logging-Agent-Implementierung namens fluent-bit eingeführt. Ab Container-Optimized OS 109 ist der Fluent-Bit-Logging-Agent standardmäßig aktiviert. Der bisherige Logging-Agent fluentd 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. Damit Sie Ihre Protokolle in einem Projekt aufrufen können, benötigen Sie die Rolle roles/logging.viewer
und die Anwendungen müssen zum Schreiben von Protokollen berechtigt sein. Sie können diese Berechtigung erteilen, 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
Führen Sie die folgenden Schritte aus, um eine Compute Engine-Instanz unter Container-Optimized OS mit aktiviertem Fluent-Bit-Logging-Agent auszuführen:
Öffnen Sie in der Google Cloud Console die Seite zum Erstellen einer Compute Engine-Instanz.
Geben Sie unter Name einen Namen für Ihre Instanz an.
Wählen Sie im Abschnitt Bootlaufwerk ein Container-Optimized OS-Image aus.
Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, Einzelmandanten, um weitere Optionen einzublenden.
Scrollen Sie auf dem Tab Verwaltung zum Abschnitt Metadaten. Fügen Sie einen neuen Metadateneintrag mit
google-logging-enabled
als Schlüssel undtrue
als Wert hinzu.Geben Sie optional weitere Optionen für Ihren Anwendungsfall an. Weitere Informationen finden Sie unter Instanzen erstellen und konfigurieren.
Klicken Sie auf Erstellen, um die Instanz zu erstellen und zu starten.
gcloud
Führen Sie den gcloud compute instances create
-Befehl aus und fügen Sie google-logging-enabled=true
in die Metadaten ein, um eine Compute Engine-Instanz unter Container-Optimized OS mit aktiviertem Logging-Agent auszuführen. Beispiel:
gcloud compute instances create instance-name \ --image image-name \ --image-project cos-cloud \ --zone compute-zone \ --metadata google-logging-enabled=true
Dabei gilt:
- instance-name ist der Name Ihrer VM-Instanz.
- image-name: Der Name des Container-Optimized OS-Images für die Instanz. Beispiel:
--image=cos-113-18244-85-29
. - compute-zone ist die Computing-Zone für Ihre Instanz.
Weitere Informationen zum Befehl gcloud
finden Sie in der Referenzdokumentation zu gcloud compute instances 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 enthalten zwei Implementierungen des Logging-Agents: fluentd (alt) und fluent-bit.
Container-Optimized OS 105 verwendet standardmäßig fluentd und Container-Optimized OS 109 standardmäßig fluent-bit. Sie können das Standardverhalten mit dem Metadateneintrag google-logging-use-fluentbit
ändern.
Wenn Sie den Fluent-Bit-Logging-Agent unter Container-Optimized OS 105 verwenden möchten, setzen Sie den Wert für google-logging-use-fluentbit
auf true
.
Wenn Sie den Fluentd-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
Rufen Sie die Seite "VM-Instanzen" auf.
Klicken Sie auf den Namen der Instanz mit Container-Optimized OS, über die Sie auf Logs zugreifen möchten.
Klicken Sie im Abschnitt Logs auf Cloud Logging.
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
Dabei gilt:
- 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-Backend gesendet werden. Beispielsweise Logs von Docker-Containern, ausgewählten systemd-Diensten, Audit-Logs und Journal-Log-Fehlern. Eine vollständige Standardkonfiguration für die Logging-Konfiguration finden Sie in der spezifischen Konfigurationsquelle für Container-Optimized OS (x86-Images und Arm-Images).
Bei X86-Images von Container-Optimized OS 105 und niedriger ist der Logging-Agent der containerisierte alte Logging-Agent von Google Cloud Observability. Der Docker-Befehl, mit dem der Logging-Agent gestartet wird, ist in der Quelldatei für den systemd-Dienst „stackdriver-logging“ von Container-Optimized OS definiert. Die Version des ausgeführten containerisierten Agents wird im Quellverzeichnis „app-admin/stackdriver“ von Container-Optimized OS definiert.
Bei 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 eingebunden 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 Fluentd-basierter Container auf x86-basierten Container-Optimized OS-Images und ein Fluent-Bit-Binary auf Arm-basierten Container-Optimized OS-Images. Die Konfigurationen der beiden Kundenservicemitarbeiter sind nicht kompatibel. Das ist kein Problem, wenn Sie sich nur auf die standardmäßige Logging-Konfiguration verlassen, die in den Betriebssystem-Images enthalten ist. Wenn Sie jedoch eine benutzerdefinierte Protokollierungskonfiguration 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 bisherigen Logging-Agent von Google Cloud Observability Der in Container-Optimized OS enthaltene containerisierte Logging-Agent ist ein Teil des bisherigen Logging-Agents. Daher kann diese Dokumentation allgemeinere Informationen zum Agenten enthalten, die über den Umfang von Container-Optimized OS hinausgehen.
- Dokumentation zu Google Cloud Observability Startseite der Google Cloud Observability-Dokumentation; kann für den Kontext hilfreich sein.