Wenn Sie den alten Logging-Agent verwenden und eine stark angepasste Konfiguration haben, empfehlen wir die Migration zu Fluentd mit Open-Source-Lizenz. Sie können Fluentd so konfigurieren, dass das Verhalten Ihrer Logging-Agent-Umgebung beibehalten wird, ohne die Erfassung Ihrer Logs durch Cloud Logging zu unterbrechen. In diesem Dokument wird der Migrationsprozess beschrieben.
Funktionsvergleich
In der folgenden Tabelle werden die wichtigsten Funktionen des alten Logging-Agent und des Upstream-Fluentd verglichen.
| Features | Legacy-Logging-Agent | Upstream-Fluentd |
|---|---|---|
| Logaufnahme in Cloud Logging | Ja | Ja |
| Standard-Systemprotokolle (Syslog) | Ja | Ja |
| Vorkonfigurierte Eingabe für Drittanbieteranwendungen | Ja | Ja † |
| Umgang mit strukturierten (JSON-) und unstrukturierten (Text-)Logs | Ja | Ja |
| Zusammenführen von mehrzeiligen Ausnahmen | Ja | Ja |
| Google Cloud Metadatenanreicherung | Ja | Ja |
| Anreicherung von Kubernetes-Metadaten | Ja | Ja |
| Eindeutige IDs für Logeinträge | Ja | Ja |
| Logfeldtransformation | Ja | Ja |
| Zuordnung von Schweregraden | Ja | Ja |
| Authentifizierung (ADC und Dienstkontoschlüssel) | Ja | Ja |
| REST- und gRPC-Transportprotokolle | Ja | Ja |
| Monitoring-Integration | Ja | Ja |
† Obwohl das Paket google-fluentd-catch-all- config nicht in der Standardinstallation von Upstream-Fluentd und ‑Plug-ins enthalten ist, können Sie die vorkonfigurierte Eingabefunktionalität beibehalten, indem Sie die in diesem Leitfaden beschriebenen Migrationsschritte ausführen.
Hinweis
Bevor Sie mit der Migration beginnen, benötigen Sie Folgendes:
- Eine unterstützte VM-Instanz in einemGoogle Cloud -Projekt.
- Anmeldedaten für die VM-Instanz, um die Kommunikation mit Cloud Logging zu autorisieren. Compute Engine-VM-Instanzen enthalten die Anmeldedaten im Allgemeinen standardmäßig. Führen Sie die Schritte unter Logging-Agent autorisieren aus, um zu prüfen, ob Sie die richtigen Anmeldedaten haben.
Zu Fluentd migrieren
In diesem Abschnitt wird beschrieben, wie Sie zur Upstream-Version von Fluentd migrieren und dabei die wichtigsten Funktionen des alten Logging-Agent beibehalten.
So migrieren Sie Ihre Einrichtung:
- Legacy-Logging-Agent herunterfahren
- Stabile Version des fluentd-Pakets installieren
- Plattform-Plug-ins Google Cloud installieren
- Konfigurationsdateien für Eingabe-Plug-ins migrieren
- Syslog-Konfiguration aktualisieren
- Fluentd-Konfigurationsdatei aktualisieren
- Prüfen, ob der Fluentd-Agent ordnungsgemäß ausgeführt wird
- Legacy-Logging-Agent deinstallieren
Legacy-Logging-Agent herunterfahren
Bevor Sie den Upstream-Fluentd-Agent installieren, müssen Sie den alten Logging-Agent beenden, um Konflikte zu vermeiden. Damit während der Migration keine ausstehenden Logs verloren gehen, sollten Sie alle gepufferten Logs beim Herunterfahren leeren.
So fahren Sie den alten Logging-Agent ordnungsgemäß herunter:
- Stellen Sie mit SSH oder einem ähnlichen Tool eine Terminalverbindung zu Ihrer VM-Instanz her und prüfen Sie, ob Sie sudo-Zugriff haben.
Wenn Sie alle gepufferten Logs leeren möchten, bevor Sie den alten Logging-Agent herunterfahren, aktivieren Sie die Option
flush_at_shutdown:Aktualisieren Sie die Datei
/etc/google-fluentd/google-fluentd.conf, um das Flagflush_at_shutdownauftruefestzulegen:# Configure the agent to flush all buffer chunks on shutdown <match **> @type google_cloud flush_at_shutdown true </match>Starten Sie den Agent neu, um die Konfigurationsänderungen zu übernehmen:
sudo service google-fluentd restart
Beenden Sie den Legacy-Logging-Agent:
sudo service google-fluentd stop
Stabile Version des fluentd-Pakets installieren
Installieren Sie eine stabile Version von Fluentd (fluentd-package) auf Ihren VM-Instanzen. Eine Anleitung finden Sie in der Fluentd-Dokumentation unter fluent-package installieren.
Google Cloud Plattform-Plug-ins installieren
Damit Fluentd mit Cloud Logging interagieren und bestimmte Logformate verarbeiten kann, müssen Sie die folgenden Plug-ins installieren:
Falls noch nicht geschehen, installieren Sie die Build-Tools für die Erweiterungskomprimierung:
Debian oder Ubuntu
Führen Sie unter Debian oder Ubuntu den folgenden Befehl aus:
sudo apt-get update sudo apt-get install -y build-essentialCentOS oder RHEL
Führen Sie unter CentOS oder RHEL den folgenden Befehl aus:
sudo yum update sudo yum groupinstall -y "Development Tools"Installieren Sie das
fluent-plugin-google-cloud-Plug-in:sudo fluent-gem install fluent-plugin-google-cloudInstallieren Sie das
fluent-plugin-detect-exceptions-Plug-in:sudo fluent-gem install fluent-plugin-detect-exceptionsOptional: Wenn bei Ihrem Legacy-Logging-Agent-Deployment Logs von Anwendungen erfasst werden, die in einem Kubernetes-Cluster ausgeführt werden, installieren Sie das
fluent-plugin-kubernetes_metadata_filter-Plug‑in:sudo fluent-gem install fluent-plugin-kubernetes_metadata_filterOptional: Wenn Ihr Legacy-Logging-Agent Messwerte im Prometheus-Format erfasst und bereitstellt, installieren Sie die folgenden Gems:
sudo fluent-gem install prometheus-client -v 0.9.0 sudo fluent-gem install fluent-plugin-prometheus -v 1.4.0
Konfigurationsdateien für Eingabe-Plug-ins migrieren
Führen Sie die folgenden Schritte aus, um Ihre vorhandenen Konfigurations- und Positionsdateien für Ihre Fluentd-Installation zu migrieren:
Erstellen Sie Verzeichnisse für die Fluentd-Konfigurations- und Positionsdateien:
# Create the destination directory for Fluentd configuration files sudo mkdir -p /etc/fluent/config.d # Create the destination directory for position files sudo mkdir -p /var/lib/fluent/posKopieren Sie Ihre
google-fluentd-Konfigurationsdateien in das Konfigurationsverzeichnis für Fluentd:sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/Kopieren Sie alle von
google-fluentdverwendeten Positionsdateien (.pos) in das Positionsdateiverzeichnis für Fluentd:sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/Mit den Positionsdateien werden Lesepositionen in Logdateien erfasst. Durch die Migration kann Fluentd an derselben Stelle beginnen, an der google-fluentd verwendet wurde.
Aktualisieren Sie den
pos_file-Pfad in Ihren neuen Fluentd-Konfigurationsdateien, sodass er auf das neue Verzeichnis für die Positionsdatei verweist:sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.confGewähren Sie dem Fluentd-Dienstnutzer
_fluentdLese- und Schreibzugriff auf das Verzeichnis/var/lib/fluent/:sudo chown -R _fluentd:_fluentd /var/lib/fluent/Gewähren Sie dem Nutzer
_fluentdLesezugriff auf Syslog-Dateien:sudo usermod -a -G adm _fluentd
Syslog-Konfiguration aktualisieren
Upstream-Fluentd wird als Nutzer ohne Berechtigungen ausgeführt, der keine Bindung an privilegierte Ports mit einer Nummer unter 1024 herstellen kann. Wenn Ihre Legacy-Einrichtung des Logging-Agent die netzwerkbasierte Syslog-Erfassung mit @type syslog auf port 514 umfasst, müssen Sie die Konfiguration anpassen.
So aktualisieren Sie die Portkonfiguration:
Ersetzen Sie den gesamten Inhalt der Datei
/etc/fluent/config.d/syslog_endpoint.confdurch die folgende Konfiguration:sudo tee /etc/fluent/config.d/syslog_endpoint.conf > /dev/null <<EOF <source> @type syslog port 5140 <transport tcp> </transport> bind 127.0.0.1 tag syslog </source> EOFErstellen oder ändern Sie die
/etc/rsyslog.d/40-fluentd-forward.conf-Datei, um Syslog-Meldungen an den neuen Fluentd-Port weiterzuleiten:sudo tee /etc/rsyslog.d/40-fluentd-forward.conf > /dev/null <<EOF # Forward all syslog messages to Fluentd on localhost:5140 via TCP *.* @@127.0.0.1:5140 EOFStarten Sie den Dienst
rsyslogneu, damit die Änderungen wirksam werden:sudo systemctl restart rsyslog.service
Hauptkonfigurationsdatei für Fluentd aktualisieren
Konfigurieren Sie den Upstream-Fluentd-Agent, indem Sie die Einstellungen aus der Konfigurationsdatei des Agents (google-fluentd.conf) in die Hauptkonfigurationsdatei von Fluentd (/etc/fluent/fluentd.conf) kopieren.
So konfigurieren Sie den Upstream-Fluentd-Agent:
Kopieren Sie den gesamten Inhalt der Datei
google-fluentd.conf, um die standardmäßige Upstream-Fluentd-Konfigurationsdatei zu überschreiben:sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.confAktualisieren Sie
buffer_pathin Ihren Fluentd-Konfigurationsdateien, damit es auf das neue Fluentd-Verzeichnis verweist:sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.confPrüfen Sie die Datei
fluentd.conf, um zu bestätigen, dass die Konfiguration Folgendes enthält:@include config.d/*.confist vorhanden, um die gesamte Konfiguration des Eingabe-Plug-ins zu importieren.- Der
<match **> @type google_cloud-Block ist so konfiguriert, dass Logs zu Cloud Logging gestreamt werden. - Der
buffer_pathim Ausgabeprogramm-Plug-in verweist jetzt auf/var/lib/fluent/. - Alle
pos_file-Direktiven in Eingabe-Plug-ins verweisen auf/var/lib/fluent/.
Führen Sie einen Probelauf aus, um Ihre Fluentd-Konfiguration zu prüfen:
sudo fluentd -c /etc/fluent/fluentd.conf --dry-runPrüfen Sie die Ausgabe auf
error- oderwarn-Warnungen. Sie müssen alle erkannten Probleme beheben, bevor Sie fortfahren können. Weitere Informationen zu Syntaxänderungen finden Sie unter Konfigurationskompatibilität für Upstream-Fluentd.Starten Sie den Fluentd-Agent neu:
sudo service fluentd restart
Prüfen, ob der Fluentd-Agent ordnungsgemäß ausgeführt wird
Prüfen Sie nach dem Starten von Fluentd, ob Logs erfolgreich an Cloud Logging gesendet werden:
Prüfen Sie, ob Fluentd ohne Fehler ausgeführt wird:
$ sudo service fluentd statusDer Dienststatus sollte „Aktiv“ (wird ausgeführt) sein.
Prüfen Sie die Fluentd-Logs und achten Sie darauf, dass keine Fehler oder Warnungen angezeigt werden:
sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || trueEs sollten keine Fehler oder Warnungen aufgeführt sein.
Prüfen Sie in Cloud Logging, ob Logs von Ihrer VM-Instanz empfangen werden. Informationen zum Aufrufen von Logs finden Sie unter Log-Explorer verwenden.
Legacy-Logging-Agent deinstallieren
Entfernen Sie den alten Logging-Agent und seine Konfigurationsdateien erst, wenn Sie bestätigt haben, dass der neue Fluentd-Agent Logs erfolgreich an Cloud Logging sendet:
Debian oder Ubuntu
sudo apt-get remove --purge google-fluentd
CentOS oder RHEL
sudo yum remove google-fluentd