Esegui la migrazione dall'agente Logging legacy a Fluentd upstream

Se utilizzi l'agente Logging legacy e hai una configurazione altamente personalizzata, ti consigliamo di eseguire la migrazione a Fluentd open source. Puoi configurare Fluentd per preservare il comportamento dell'ambiente dell'agente Logging senza interrompere la raccolta dei log da parte di Cloud Logging. Questo documento descrive il processo di migrazione.

Confronto delle funzioni

La seguente tabella fornisce un confronto di parità delle funzionalità chiave tra l'agente Logging legacy e Fluentd upstream.

Funzionalità Agente Logging legacy Fluentd upstream
Importazione dei log in Cloud Logging Sì Sì
Log di sistema standard (syslog) Sì Sì
Input di applicazioni di terze parti preconfigurate Sì Sì †
Gestione dei log strutturati (JSON) e non strutturati (testo) Sì Sì
Unione di eccezioni multiriga Sì Sì
Arricchimento dei metadatiGoogle Cloud Sì Sì
Arricchimento dei metadati di Kubernetes Sì Sì
ID voce di log univoci Sì Sì
Trasformazione dei campi log Sì Sì
Mappatura della gravità Sì Sì
Autenticazione (ADC e chiavi del service account) Sì Sì
Protocolli di trasporto REST e gRPC Sì Sì
Integrazione di Monitoring Sì Sì

†  Sebbene il pacchetto google-fluentd-catch-all- config non sia incluso nell'installazione standard di Fluentd e dei plug-in upstream, puoi mantenere la funzionalità di input preconfigurata seguendo i passaggi di migrazione descritti in questa guida.

Prima di iniziare

Prima di iniziare la migrazione, assicurati di disporre di quanto segue:

  • Un'istanza VM supportata in un progettoGoogle Cloud .
  • Credenziali sull'istanza VM che autorizzano la comunicazione con Cloud Logging. Per impostazione predefinita, le istanze VM di Compute Engine hanno le credenziali corrette. Per verificare se disponi delle credenziali appropriate, esegui le procedure di autorizzazione dell'agente Logging.

Esegui la migrazione a Fluentd

Questa sezione descrive i passaggi per eseguire la migrazione alla versione upstream di Fluentd, mantenendo le funzionalità chiave fornite dall'agente Logging legacy.

Per eseguire la migrazione della configurazione, completa i seguenti passaggi:

  1. Arrestare l'agente Logging precedente
  2. Installa una versione stabile di fluentd-package
  3. Installare Google Cloud i plug-in della piattaforma
  4. Eseguire la migrazione dei file di configurazione dei plug-in di input
  5. Aggiorna la configurazione di syslog
  6. Aggiornare il file di configurazione di Fluentd
  7. Verificare che l'agente Fluentd sia in esecuzione correttamente
  8. Disinstalla l'agente Logging precedente

Arrestare l'agente Logging legacy

Prima di installare l'agente Fluentd upstream, devi arrestare l'agente Logging legacy per evitare conflitti. Per evitare di perdere i log in attesa durante la migrazione, assicurati di svuotare tutti i log memorizzati nel buffer all'arresto.

Per arrestare normalmente l'agente Logging legacy:

  1. Apri una connessione terminale all'istanza VM utilizzando SSH o uno strumento simile e assicurati di disporre dell'accesso sudo.
  2. Per svuotare i log memorizzati nel buffer prima di arrestare l'agente Logging legacy, attiva l'opzione flush_at_shutdown:

    1. Aggiorna il file /etc/google-fluentd/google-fluentd.conf per impostare il flag flush_at_shutdown su true:

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. Riavvia l'agente per applicare le modifiche alla configurazione:

      sudo service google-fluentd restart
      
  3. Interrompi l'agente Logging legacy:

    sudo service google-fluentd stop
    

Installa una versione stabile di fluentd-package

Installa una distribuzione stabile di Fluentd (fluentd-package) nelle tue istanze VM. Per istruzioni, consulta la documentazione di Fluentd Install fluent-package.

Installare i plug-in della piattaforma Google Cloud

Per consentire a Fluentd di interagire con Cloud Logging e gestire formati di log specifici, installa i seguenti plug-in:

  1. Se non sono già installati, installa gli strumenti di compilazione per la compilazione delle estensioni:

    Debian o Ubuntu

    Esegui questo comando su Debian o Ubuntu:

    sudo apt-get update
    sudo apt-get install -y build-essential
    

    CentOS o RHEL

    Esegui questo comando su CentOS o RHEL:

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. Installa il plug-in fluent-plugin-google-cloud:

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. Installa il plug-in fluent-plugin-detect-exceptions:

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. (Facoltativo) Se il deployment dell'agente Logging legacy raccoglie i log dalle applicazioni in esecuzione all'interno di un cluster Kubernetes, installa il plug-in fluent-plugin-kubernetes_metadata_filter:

    sudo fluent-gem install fluent-plugin-kubernetes_metadata_filter
    
  5. (Facoltativo) Se l'agente Logging legacy raccoglie ed espone le metriche in formato Prometheus, installa i seguenti gemme:

    sudo fluent-gem install prometheus-client -v 0.9.0
    sudo fluent-gem install fluent-plugin-prometheus -v 1.4.0
    

Migrare i file di configurazione dei plug-in di input

Per eseguire la migrazione dei file di configurazione e posizione esistenti per l'installazione di Fluentd, completa i seguenti passaggi:

  1. Crea le directory per i file di configurazione e posizione di Fluentd:

    # 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. Copia i file di configurazione google-fluentd nella directory di configurazione per Fluentd:

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. Copia tutti i file di posizione (.pos) utilizzati da google-fluentd nella directory dei file di posizione per Fluentd:

    sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/
    

    I file di posizione vengono utilizzati per monitorare le posizioni di lettura nei file di log. La migrazione consente a Fluentd di iniziare dallo stesso punto in cui veniva utilizzato google-fluentd.

  4. Aggiorna il percorso pos_file nei nuovi file di configurazione Fluentd in modo che punti alla nuova directory dei file di posizione:

    sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.conf
    
  5. Concedi all'utente del servizio Fluentd ,_fluentd, l'accesso in lettura e scrittura alla directory /var/lib/fluent/:

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. Concedi all'utente _fluentd l'accesso in lettura ai file syslog:

    sudo usermod -a -G adm _fluentd
    

Aggiorna la configurazione di syslog

Fluentd upstream viene eseguito come utente senza privilegi, che non può eseguire il binding a porte con privilegi numerate inferiori a 1024. Se la configurazione dell'agente Logging legacy include la raccolta syslog basata sulla rete utilizzando @type syslog su port 514, devi modificare la configurazione.

Per aggiornare la configurazione della porta:

  1. Sostituisci l'intero contenuto del file /etc/fluent/config.d/syslog_endpoint.conf con la seguente configurazione:

    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. Crea o modifica il file /etc/rsyslog.d/40-fluentd-forward.conf per inoltrare i messaggi syslog alla nuova porta Fluentd:

    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. Riavvia il servizio rsyslog per applicare le modifiche:

    sudo systemctl restart rsyslog.service
    

Aggiorna il file di configurazione Fluentd principale

Configura l'agente Fluentd upstream replicando le impostazioni dal file di configurazione dell'agente, google-fluentd.conf, al file di configurazione principale di Fluentd, che si trova in /etc/fluent/fluentd.conf.

Per configurare l'agente Fluentd upstream, completa i seguenti passaggi:

  1. Copia l'intero contenuto del file google-fluentd.conf per sovrascrivere il file di configurazione Fluentd upstream predefinito:

    sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf
    
  2. Aggiorna buffer_path nei file di configurazione di Fluentd in modo che punti alla nuova directory di Fluentd:

    sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.conf
    
  3. Esamina il file fluentd.conf per verificare che la configurazione includa quanto segue:

    • @include config.d/*.conf è presente per importare tutta la configurazione del plug-in di input.
    • Il blocco <match **> @type google_cloud è configurato per lo streaming dei log in Cloud Logging.
    • buffer_path all'interno del plug-in di output ora punta a /var/lib/fluent/.
    • Qualsiasi direttiva pos_file all'interno dei plug-in di input punta a /var/lib/fluent/.
  4. Esegui un dry run per verificare la configurazione di Fluentd:

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

    Controlla l'output risultante per eventuali avvisi error o warn. Devi risolvere eventuali problemi identificati prima di procedere. Per i dettagli sulle modifiche alla sintassi, consulta Compatibilità della configurazione per Fluentd upstream.

  5. Riavvia l'agente Fluentd:

    sudo service fluentd restart
    

Verifica che l'agente Fluentd sia in esecuzione correttamente

Dopo aver avviato Fluentd, verifica che i log vengano inviati correttamente a Cloud Logging:

  1. Verifica che Fluentd sia in esecuzione senza errori:

    $ sudo service fluentd status
    

    Lo stato del servizio deve essere attivo (in esecuzione).

  2. Controlla i log di Fluentd e assicurati che non siano presenti errori o avvisi:

    sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || true
    

    Non devono essere elencati errori o avvisi.

  3. Controlla Cloud Logging per verificare che i log vengano ricevuti dall'istanza VM. Per informazioni sulla visualizzazione dei log, vedi Utilizzo di Esplora log.

Disinstalla l'agente Logging legacy

Solo dopo aver verificato che il nuovo Fluentd invia correttamente i log a Cloud Logging, rimuovi l'agente Logging legacy e i relativi file di configurazione:

Debian o Ubuntu

  sudo apt-get remove --purge google-fluentd

CentOS o RHEL

  sudo yum remove google-fluentd