Vom Legacy-Logging-Agent zu Upstream-Fluentd migrieren

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:

  1. Legacy-Logging-Agent herunterfahren
  2. Stabile Version des fluentd-Pakets installieren
  3. Plattform-Plug-ins Google Cloud installieren
  4. Konfigurationsdateien für Eingabe-Plug-ins migrieren
  5. Syslog-Konfiguration aktualisieren
  6. Fluentd-Konfigurationsdatei aktualisieren
  7. Prüfen, ob der Fluentd-Agent ordnungsgemäß ausgeführt wird
  8. 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:

  1. Stellen Sie mit SSH oder einem ähnlichen Tool eine Terminalverbindung zu Ihrer VM-Instanz her und prüfen Sie, ob Sie sudo-Zugriff haben.
  2. Wenn Sie alle gepufferten Logs leeren möchten, bevor Sie den alten Logging-Agent herunterfahren, aktivieren Sie die Option flush_at_shutdown:

    1. Aktualisieren Sie die Datei /etc/google-fluentd/google-fluentd.conf, um das Flag flush_at_shutdown auf true festzulegen:

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. Starten Sie den Agent neu, um die Konfigurationsänderungen zu übernehmen:

      sudo service google-fluentd restart
      
  3. 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:

  1. 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-essential
    

    CentOS oder RHEL

    Führen Sie unter CentOS oder RHEL den folgenden Befehl aus:

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. Installieren Sie das fluent-plugin-google-cloud-Plug-in:

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. Installieren Sie das fluent-plugin-detect-exceptions-Plug-in:

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. Optional: 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_filter
    
  5. Optional: 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:

  1. 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/pos
    
  2. Kopieren Sie Ihre google-fluentd-Konfigurationsdateien in das Konfigurationsverzeichnis für Fluentd:

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. Kopieren Sie alle von google-fluentd verwendeten 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.

  4. 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/*.conf
    
  5. Gewähren Sie dem Fluentd-Dienstnutzer _fluentd Lese- und Schreibzugriff auf das Verzeichnis /var/lib/fluent/:

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. Gewähren Sie dem Nutzer _fluentd Lesezugriff 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:

  1. Ersetzen Sie den gesamten Inhalt der Datei /etc/fluent/config.d/syslog_endpoint.conf durch 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>
    EOF
    
  2. Erstellen 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
    EOF
    
  3. Starten Sie den Dienst rsyslog neu, 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:

  1. 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.conf
    
  2. Aktualisieren Sie buffer_path in 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.conf
    
  3. Prüfen Sie die Datei fluentd.conf, um zu bestätigen, dass die Konfiguration Folgendes enthält:

    • @include config.d/*.conf ist 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_path im Ausgabeprogramm-Plug-in verweist jetzt auf /var/lib/fluent/.
    • Alle pos_file-Direktiven in Eingabe-Plug-ins verweisen auf /var/lib/fluent/.
  4. Führen Sie einen Probelauf aus, um Ihre Fluentd-Konfiguration zu prüfen:

    sudo fluentd -c /etc/fluent/fluentd.conf --dry-run
    

    Prüfen Sie die Ausgabe auf error- oder warn-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.

  5. 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:

  1. Prüfen Sie, ob Fluentd ohne Fehler ausgeführt wird:

    $ sudo service fluentd status
    

    Der Dienststatus sollte „Aktiv“ (wird ausgeführt) sein.

  2. 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" || true
    

    Es sollten keine Fehler oder Warnungen aufgeführt sein.

  3. 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