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:
- Arrestare l'agente Logging precedente
- Installa una versione stabile di fluentd-package
- Installare Google Cloud i plug-in della piattaforma
- Eseguire la migrazione dei file di configurazione dei plug-in di input
- Aggiorna la configurazione di syslog
- Aggiornare il file di configurazione di Fluentd
- Verificare che l'agente Fluentd sia in esecuzione correttamente
- 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:
- Apri una connessione terminale all'istanza VM utilizzando SSH o uno strumento simile e assicurati di disporre dell'accesso sudo.
Per svuotare i log memorizzati nel buffer prima di arrestare l'agente Logging legacy, attiva l'opzione
flush_at_shutdown:Aggiorna il file
/etc/google-fluentd/google-fluentd.confper impostare il flagflush_at_shutdownsutrue:# Configure the agent to flush all buffer chunks on shutdown <match **> @type google_cloud flush_at_shutdown true </match>Riavvia l'agente per applicare le modifiche alla configurazione:
sudo service google-fluentd restart
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:
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-essentialCentOS o RHEL
Esegui questo comando su CentOS o RHEL:
sudo yum update sudo yum groupinstall -y "Development Tools"Installa il plug-in
fluent-plugin-google-cloud:sudo fluent-gem install fluent-plugin-google-cloudInstalla il plug-in
fluent-plugin-detect-exceptions:sudo fluent-gem install fluent-plugin-detect-exceptions(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(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:
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/posCopia i file di configurazione
google-fluentdnella directory di configurazione per Fluentd:sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/Copia tutti i file di posizione (
.pos) utilizzati dagoogle-fluentdnella 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.
Aggiorna il percorso
pos_filenei 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/*.confConcedi 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/Concedi all'utente
_fluentdl'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:
Sostituisci l'intero contenuto del file
/etc/fluent/config.d/syslog_endpoint.confcon 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> EOFCrea o modifica il file
/etc/rsyslog.d/40-fluentd-forward.confper 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 EOFRiavvia il servizio
rsyslogper 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:
Copia l'intero contenuto del file
google-fluentd.confper sovrascrivere il file di configurazione Fluentd upstream predefinito:sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.confAggiorna
buffer_pathnei 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.confEsamina il file
fluentd.confper 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_pathall'interno del plug-in di output ora punta a/var/lib/fluent/.- Qualsiasi direttiva
pos_fileall'interno dei plug-in di input punta a/var/lib/fluent/.
Esegui un dry run per verificare la configurazione di Fluentd:
sudo fluentd -c /etc/fluent/fluentd.conf --dry-runControlla l'output risultante per eventuali avvisi
errorowarn. Devi risolvere eventuali problemi identificati prima di procedere. Per i dettagli sulle modifiche alla sintassi, consulta Compatibilità della configurazione per Fluentd upstream.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:
Verifica che Fluentd sia in esecuzione senza errori:
$ sudo service fluentd statusLo stato del servizio deve essere attivo (in esecuzione).
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" || trueNon devono essere elencati errori o avvisi.
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