Risolvi i problemi dell'agente Logging

Questa pagina fornisce istruzioni per la risoluzione dei problemi comuni riscontrati durante l'installazione o l'interazione con l'agente Logging.

Elenco di controllo

Se hai difficoltà a installare o utilizzare l'agente Logging, puoi verificare quanto segue:

  • Se i comandi di installazione di Linux generano errori, assicurati di precedere sudo per i comandi di installazione.

  • Verifica che il servizio dell'agente sia in esecuzione sulla tua istanza VM:

    • Per una VM Windows, utilizza il seguente comando PowerShell:

      Get-Service -Name StackdriverLogging
      

      Cerca un servizio chiamato Stackdriver Logging. Se l'agente non è in esecuzione, potrebbe essere necessario riavviarlo.

    • Per una VM Linux, utilizza il comando seguente:

      sudo service google-fluentd status
      

      Se l'agente non è in esecuzione, potrebbe essere necessario riavviarlo utilizzando il seguente comando:

      sudo service google-fluentd restart
      

      Se il riavvio non riesce e l'output di log mostra "Disabilitato tramite metadati", probabilmente stai eseguendo un'immagine da Google Cloud Marketplace, in cui l'agente Logging è disabilitato per impostazione predefinita. La chiave di metadati dell'istanza google-logging-enable controlla lo stato di abilitazione dell'agente Logging, in cui un valore 0 disabilita l'agente. Per riattivare l'agente, rimuovi la chiave google-logging-enable o imposta il relativo valore su 1. Per maggiori informazioni, consulta Creare un'istanza con l'agente Logging disabilitato.

      Se l'agente non viene disabilitato tramite i metadati, reinstallalo. Consulta la sezione seguente, Reinstallazione dell'agente Logging.

  • Verifica se l'agente ha scritto messaggi di errore nei log.

    • Su Windows, a partire dalla versione v1-9, l'agente Logging salva i log in C:\Program Files (x86)\Stackdriver\LoggingAgent\fluentd.log.

      Non è possibile recuperare i log delle versioni precedenti dell'agente.

    • Su Linux, l'agente Logging è un pacchetto fluentd e registra i messaggi in /var/log/google-fluentd/google-fluentd.log:

      • Se vengono visualizzati errori HTTP 429, potresti aver superato le quote dell'API Logging. Per visualizzare la quota disponibile, seleziona API e servizi > Dashboard nella console Google Cloud. Scegli l'API Logging.

      • Se riscontri problemi di accesso alle API o di autorizzazione, vai a Verificare le credenziali di Compute Engine.

  • Se l'agente sembra funzionare normalmente, ma non ricevi dati, devi verificare che stia inviando i dati al progetto corretto. Consulta la sezione Verificare le credenziali di Compute Engine riportata di seguito.

  • Se l'agente non riesce a concedere l'autorizzazione, verifica se le credenziali della chiave privata sono mancate o non valide.

Verifica l'installazione dell'agente

Per verificare che l'installazione sia riuscita, cerca la voce del log di test dell'agente in Esplora log.

  1. Nella console Google Cloud, vai alla pagina Esplora log:

    Vai a Esplora log

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Nella parte superiore della pagina, scegli il progetto contenente la tua istanza VM:

    • Per Istanze VM di Compute Engine, scegli il progetto Google Cloud che contiene l'istanza VM.
    • Per le istanze VM Amazon EC2, scegli il progetto connettore AWS che collega il tuo account AWS ai servizi Google Cloud.
  3. Nelle schede Windows, scegli la risorsa per la tua istanza VM:

    • Per Compute Engine, scegli Istanza VM GCE.
    • Per Amazon EC2, scegli Istanza AWS EC2.
    • Seleziona syslog (Linux), fluent.info (Windows) o Tutti i log.

Se vedi la voce di log "gRPC inviato all'API Logging", l'installazione dell'agente è completata. Questo messaggio viene generato una volta al momento dell'installazione dell'agente e del riavvio di ogni agente.

Per ulteriori informazioni su Esplora log, consulta Utilizzo di Esplora log.

Testa l'agente

Se sospetti che l'agente non funzioni, controlla che sia in esecuzione e prova a inviare un messaggio di prova a Logging:

Istanza Linux

La seguente procedura funziona su istanze VM di Compute Engine e Amazon EC2 che eseguono Linux:

  1. Verifica che l'agente Logging sia in esecuzione eseguendo questi comandi sull'istanza VM:

    ps ax | grep fluentd
    

    Dovresti vedere un output simile al seguente:

     2284 ?        Sl     0:00 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
     2287 ?        Sl    42:44 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
    
  2. Invia un messaggio di log di prova eseguendo il comando seguente sull'istanza VM:

    logger "Some test message"
    

Istanza Windows

L'agente Logging ha due nomi di servizio Windows:

  • StackdriverLogging per le versioni v1-5 e successive
  • fluentdwinsvc per le versioni precedenti

Dovresti eseguire un servizio agente. Esegui i comandi seguenti sull'istanza VM utilizzando PowerShell:

  1. Chiedi lo stato di entrambi i servizi. Se sai quale servizio deve essere in esecuzione, puoi utilizzare solo il nome del servizio in questione:

    Get-Service StackdriverLogging,fluentdwinsvc
    
  2. Se un servizio non è in esecuzione, viene visualizzato un messaggio di errore. Se è in esecuzione, vedrai un output simile al seguente:

    Status    Name                DisplayName
    ------    ----                -----------
    Running  StackdriverLogging   Cloud Logging
    
  3. Se esegui una query su entrambi i servizi, dovresti visualizzare un messaggio di errore e un solo stato di Running:

    • Se non vedi alcuno stato Running, significa che l'agente Logging non è in esecuzione.
    • Se vedi che StackdriverLogging è in esecuzione, significa che stai eseguendo una versione recente dell'agente. Per determinare la versione specifica, consulta Recupero della versione.
    • Se vedi che fluentdwinsvc è in esecuzione, devi eseguire l'upgrade dell'agente alla versione più recente.
  4. Richiede privilegi di amministratore: se una versione dell'agente è in esecuzione, invia un messaggio di log di prova eseguendo i seguenti comandi di PowerShell:

    New-EventLog   -LogName Application -Source "Test Source"
    Write-EventLog -LogName Application -Source "Test Source" -EntryType Information -EventID 1 -Message "Testing 123 Testing."
    

Trova il tuo messaggio di prova

Dopo aver inviato un messaggio di prova, cercalo in Esplora log:

  1. Nella console Google Cloud, vai alla pagina Esplora log:

    Vai a Esplora log

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Nella parte superiore della pagina, scegli il progetto contenente la tua istanza VM:

    • Per Istanze VM di Compute Engine, scegli il progetto Google Cloud che contiene l'istanza VM.
    • Per le istanze VM Amazon EC2, scegli il progetto connettore AWS che collega il tuo account AWS ai servizi Google Cloud.
  3. Nelle schede Windows, scegli la risorsa per la tua istanza VM:

    • Per Compute Engine, scegli Istanza VM GCE.
    • Per Amazon EC2, scegli Istanza AWS EC2.
    • Seleziona syslog (Linux), fluent.info (Windows) o Tutti i log.
  4. Dovresti vedere una voce di log con il tuo messaggio di prova. Se è così, l'agente Logging funziona correttamente.

Verifica le credenziali di Compute Engine

Affinché un'istanza VM di Compute Engine esegua l'agente senza credenziali di chiave privata, l'istanza deve avere ambiti di accesso adatti e l'identità dell'account di servizio utilizzata dall'istanza deve avere autorizzazioni IAM appropriate.

Quando crei un'istanza VM, le impostazioni predefinite dell'ambito e dell'account di servizio sono sufficienti per eseguire gli agenti. Le istanze molto vecchie o per le quali hai modificato le impostazioni predefinite potrebbero non avere credenziali adatte.

Impossibile caricare le credenziali predefinite

Se sono presenti errori Could not load the default credentials nel file di log di Logging, significa che l'agente potrebbe non riuscire a connettersi al server metadati di Compute Engine.

Il log degli errori ha il seguente aspetto:

Starting google-fluentd 1.8.4: /opt/google-fluentd/embedded/lib/ruby/gems/2.6.0/gems/googleauth-0.9.0/lib/googleauth/application_default.rb:74:in `get_application_default': Could not load the default credentials. Browse to (RuntimeError) https://developers.google.com/accounts/docs/application-default-credentials for more information.

Una potenziale causa è che la VM ha una configurazione proxy personalizzata. Per risolvere il problema, consulta l'istruzione di configurazione del proxy per escludere il server metadati di Compute Engine (metadata.google.internal o 169.254.169.254) dal proxy. Se l'errore persiste, rimuovi l'account di servizio Compute Engine predefinito dalla VM e aggiungilo di nuovo.

Verifica gli ambiti di accesso

Per verificare gli ambiti di accesso:

  1. Nella console Google Cloud, vai alla pagina Istanze VM:

    Vai a Istanze VM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

  2. Fai clic sul nome dell'istanza VM. Viene visualizzata la pagina dei dettagli dell'istanza.

  3. Nella sezione Ambiti di accesso API Cloud, fai clic su Dettagli per visualizzare l'elenco delle API. Cerca le seguenti voci:

    1. Se visualizzi il messaggio "Questa istanza ha accesso API completo a tutti i servizi Google Cloud", gli ambiti di accesso sono adeguati.
    2. Se accanto all'API Stackdriver Logging vedi un nome meno recente per l'API Cloud Logging, che disponi dell'autorizzazione Solo scrittura o Completa, significa che gli ambiti di accesso della tua istanza sono adeguati per l'agente Cloud Logging.
    3. Se accanto all'API Stackdriver Monitoring vedi un nome meno recente per l'API Cloud Monitoring, che disponi dell'autorizzazione Solo scrittura o Completa, significa che gli ambiti di accesso dell'istanza sono adeguati per l'agente Cloud Monitoring.

Risolvere il problema

Se nella tua istanza Compute Engine non disponi di ambiti di accesso adatti, aggiungi alla tua istanza gli ambiti di accesso necessari.

La tabella seguente mostra gli ambiti pertinenti per gli agenti Logging e Monitoring:

Ambito dell'accesso Autorizzazioni agente
https://www.googleapis.com/auth/logging.write Adeguato per l'agente Logging
https://www.googleapis.com/auth/monitoring.write Adeguato per l'agente Monitoring

Verifica l'autorizzazione dell'account di servizio predefinita

Anche se gli ambiti di accesso dell'istanza VM di Compute Engine sono adeguati, l'account di servizio predefinito dell'istanza potrebbe non fornire le autorizzazioni IAM corrette per l'agente.

Per verificare l'autorizzazione dell'account di servizio predefinito, individua innanzitutto l'account di servizio predefinito:

  1. Nella console Google Cloud, vai alla pagina Istanze VM:

    Vai a Istanze VM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

  2. Fai clic sul nome dell'istanza VM. Viene visualizzata la pagina dei dettagli dell'istanza.

  3. Cerca l'intestazione Account di servizio nella pagina. Viene elencato l'account di servizio predefinito per l'istanza. Potrebbe avere il seguente aspetto:

    [ID]-compute@developer.gserviceaccount.com
    
  4. Nella console Google Cloud, vai alla pagina IAM:

    Vai a IAM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

  5. Seleziona Visualizza per: Entità. Dovresti vedere un elenco di persone, gruppi e account di servizio. Nella colonna Ruolo sono indicati i ruoli di ciascuna entità nel tuo progetto.

  6. Nella riga dell'account di servizio predefinito dell'istanza, dovresti visualizzare uno o più ruoli:

Risolvere il problema

Se il tuo account di servizio predefinito non dispone di ruoli adeguati, prova a modificare i ruoli dell'account di servizio nella pagina IAM e amministrazione > IAM. Aggiungi i ruoli Logging o Monitoring corretti per autorizzare gli agenti: Logging > Writer log o Monitoring > Writer metriche Monitoring.

Verifica le credenziali della chiave privata

Nelle istanze VM di Compute Engine, puoi configurare l'agente in modo che utilizzi un account di servizio non predefinito con l'autorizzazione adeguata. Nelle istanze VM AWS EC2, devi configurare l'agente in modo che utilizzi questo account di servizio.

Per configurare l'agente in questo modo, devi creare credenziali con chiave privata per l'account di servizio designato e assegnarle all'agente.

  1. L'agente cerca una variabile di ambiente, GOOGLE_APPLICATION_CREDENTIALS, che contiene il nome di un file contenente le credenziali della chiave privata.
  2. Se la variabile di ambiente non è presente, l'agente cercherà le credenziali in una località predefinita:

    Linux

    /etc/google/auth/application_default_credentials.json
    

    Windows

    C:\ProgramData\Google\Auth\application_default_credentials.json
    
  3. Se la località predefinita non contiene le credenziali, l'agente utilizza le credenziali predefinite dell'applicazione del server di metadati.

Le seguenti informazioni consentono di diagnosticare i problemi relativi alle credenziali con chiave privata:

  1. La chiave privata è presente?
  2. La chiave privata è ancora valida per l'account di servizio?
  3. L'account di servizio dispone dei ruoli necessari per l'agente?

Per verificare che nell'istanza VM siano installate credenziali con chiave privata valide, verifica innanzitutto che il file delle credenziali esista nella posizione prevista, quindi verifica che le informazioni contenute nel file delle credenziali siano valide.

Le credenziali sono presenti?

Per verificare se nell'istanza sono presenti credenziali dell'account di servizio chiavi privata, esegui i seguenti comandi Linux nell'istanza:

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

Se uno dei due comandi visualizza un file come quello mostrato di seguito, l'istanza potrebbe avere credenziali di chiave privata valide. Se entrambi i comandi visualizzano un file, viene utilizzato il file indicato con GOOGLE_APPLICATION_CREDENTIALS.

{
  "type": "service_account",
  "project_id": "[YOUR-PROJECT-ID]",
  "private_key_id": "[YOUR-PRIVATE-KEY-ID]",
  "private_key": "[YOUR-PRIVATE-KEY]",
  "client_email": "[YOUR-PROJECT-NUMBER]-[YOUR-KEY@DEVELOPER].gserviceaccount.com",
  "client_id": "[YOUR-CLIENT-ID]",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "{x509-cert-url}",
  "client_x509_cert_url": "{client-x509-cert-url}"
}

Le discrepanze tra le configurazioni delle credenziali possono causare l'utilizzo da parte dell'agente di credenziali diverse da quelle richieste dal servizio. Ad esempio, se imposti una località delle credenziali personalizzate in GOOGLE_APPLICATION_CREDENTIALS nella shell di accesso, ma non imposti questa variabile nella configurazione del servizio dell'agente, il servizio cercherà nella località predefinita anziché nella località personalizzata.

Per esaminare o modificare la variabile di ambiente delle credenziali, accedi o imposta GOOGLE_APPLICATION_CREDENTIALS in /etc/default/google-fluentd.

Se non sono presenti file di credenziali, consulta Aggiunta delle credenziali.

Le credenziali sono valide?

Nel file delle credenziali, project_id è il tuo progetto Google Cloud, client_email identifica l'account di servizio nel progetto e private_key_id identifica la chiave privata nell'account di servizio. Abbina queste informazioni a quanto visualizzato nella sezione IAM e amministrazione > Account di servizio della console Google Cloud.

Il file delle credenziali non è valido se una delle seguenti condizioni è vera:

  • Stai controllando un'istanza Compute Engine, ma il progetto Google Cloud nel file delle credenziali non è quello che contiene l'istanza.
  • Stai controllando un'istanza Amazon EC2, ma il progetto Google Cloud nel file delle credenziali non è il progetto connettore (denominato AWS Link...) per il tuo account AWS.
  • L'account di servizio elencato non esiste. Potrebbe essere stato eliminato.
  • Per l'account di servizio in elenco non sono abilitati i ruoli corretti: Writer log per l'agente Cloud Logging e Writer metriche Monitoring per l'agente Cloud Monitoring.
  • La chiave privata non esiste. Potrebbe essere stato revocato.

Puoi revocare le credenziali utilizzando la sezione IAM e amministrazione > Account di servizio della console Google Cloud. Se non sono presenti credenziali valide, consulta Aggiunta di credenziali per sostituire quelle esistenti o per aggiungerne di nuove.

Se l'account di servizio è corretto, ma la chiave privata è stata revocata, puoi creare una nuova chiave privata e copiarla nell'istanza. Consulta Creazione di chiavi dell'account di servizio.

In caso contrario, devi creare un nuovo account di servizio come descritto nella sezione Aggiungere credenziali.

Verificare le query di esclusione dei log

Visualizza le query di esclusione attuali per assicurarti che i log che stai cercando non vengano esclusi accidentalmente.

Verifica firewall

Per verificare se la tua istanza ha accesso a logging.googleapis.com, esegui questo comando Linux sull'istanza:

curl -sSL 'https://logging.googleapis.com/$discovery/rest?version=v2' | head

Il completamento del comando può richiedere del tempo quando il firewall blocca il traffico in uscita. Esempio di output che indica un problema del firewall:

curl: (7) Failed to connect to 2607:f8b0:4001:c03::5f: Network is unreachable

Consulta la pagina Regole firewall per informazioni su come configurare le regole per il traffico in uscita.

Reinstalla l'agente

L'installazione della versione più recente dell'agente può risolvere molti problemi:

Altri problemi comuni

Nella tabella seguente sono elencati alcuni problemi comuni che potresti riscontrare con l'agente Cloud Logging e viene spiegato come risolverli.

Su Linux, l'agente Logging registra gli errori in /var/log/google-fluentd/google-fluentd.log. Su Windows, l'agente Logging registra gli errori in C:\Program Files (x86)\Stackdriver\LoggingAgent\fluentd.log (a partire dalla versione v1-9). La classe di errore Google::APIClient::ClientError indica un problema con le autorizzazioni o l'accesso all'API.

Potresti iniziare a visualizzare errori dopo che l'agente è stato eseguito correttamente. Ad esempio, qualcuno potrebbe aver revocato le autorizzazioni richieste dal tuo progetto o dalla tua istanza VM.

Errore Causa Soluzione
Impossibile eseguire il programma di installazione dell'agente su Windows Potresti aver scaricato il programma di installazione in una directory di sistema. Sposta il programma di installazione in una directory non di sistema, ad esempio C:\Users\[USERID]\.
Il progetto non ha abilitato l'API Non hai abilitato l'API Cloud Logging nel tuo progetto. Vai alla console API e imposta lo stato dell'API Cloud Logging su ON.
La richiesta aveva credenziali non valide
o
Impossibile recuperare il token di accesso (nessun ambito configurato?)
La tua istanza VM non dispone di credenziali adatte. Se utilizzi Amazon EC2, devi installare le credenziali sulle istanze VM prima di installare l'agente. Vedi Autorizzare l'agente Logging per installare le credenziali.
Autorizzazione negata Le tue credenziali di autorizzazione con chiave privata per l'agente Logging non sono configurate correttamente. Consulta la sezione Verificare le credenziali della chiave privata.
Il chiamante non dispone dell'autorizzazione L'account di servizio utilizzato per l'autorizzazione nel progetto non dispone di autorizzazioni sufficienti. Potrebbe essere l'account di servizio predefinito utilizzato in Compute Engine o App Engine oppure un account di servizio definito dall'utente utilizzato per l'autorizzazione con chiave privata. L'account deve avere il ruolo Editor. Modifica l'autorizzazione dell'account di servizio nella pagina IAM del progetto. Se necessario, puoi modificare l'ambito di accesso per una VM esistente utilizzando le procedure relative alla modifica dell'account di servizio e degli ambiti di accesso per un'istanza.
Impossibile ottenere l'ID progetto L'agente Cloud Logging non è riuscito a ottenere l'ID progetto dal file delle credenziali della chiave privata dell'account di servizio. Per aggiungere o eseguire l'override di un ID progetto per l'agente, modifica il file di configurazione dell'agente, /etc/google-fluentd/google-fluentd.conf, sulla tua istanza VM. Nella sezione <match **>, aggiungi la riga seguente:
project_id [YOUR_PROJECT_ID]
In caso contrario, consulta Autorizzare l'agente Logging a correggere o sostituire le credenziali.
L'agente Windows Logging smette di importare i log eventi da alcuni canali L'agente Logging potrebbe non riuscire a importare i log eventi da determinati canali, anche se è ancora in esecuzione e a importare i log degli agenti e i log eventi da altri canali. Il motivo è che il plug-in windows_eventlog presenta alcuni problemi, come indicato in questa presentazione. L'utilizzo di windows_eventlog2 risolve il problema. Nota: il formato dei dati del plug-in windows_eventlog2 non è compatibile con le versioni precedenti del plug-in windows_eventlog. Se sono presenti pipeline di esportazione di BigQuery o Google Cloud Storage configurate per questi log, queste devono essere regolate di conseguenza. Consulta questo confronto delle voci di log fornito da windows_eventlog e windows_eventlog2. Per utilizzare windows_eventlog2, devi prima arrestare l'agente Logging, quindi sostituire il file di configurazione con uno simile a questo file di configurazione di esempio. Infine, avvia l'agente Logging.
L'agente Logging smette di importare i log in presenza di logrotate L'agente Logging potrebbe perdere di vista la sua posizione nei file di input quando la rotazione di log viene configurata con l'impostazione copytruncate. È preferibile utilizzare l'impostazione nocopytruncate per assicurarti che logrotate sposti i file anziché troncarli. Se vuoi mantenere l'impostazione copytruncate, la soluzione alternativa è riavviare l'agente periodicamente. In alternativa, puoi utilizzare l'impostazione postrotate per riavviare l'agente.
error_class=Errno::EADDRINUSE error="Indirizzo già in uso - bind(2) per 0.0.0.0:24231" Sulla VM sono in esecuzione più istanze dell'agente Logging. Utilizzo di ps -aux | grep "/usr/sbin/google-fluentd" per mostrare i processi dell'agente in esecuzione (dovrebbero esserci solo due: un supervisore e un worker) e sudo netstat -nltp | grep :24231 per mostrare i processi in esecuzione che occupano la porta. Termina le istanze meno recenti, come previsto.
L'agente Logging non si avvia a causa di errori da lib/fluent/config/types.rb La configurazione dell'agente Logging utilizza una sezione dell'analizzatore sintattico dell'espressione regolare che contiene un'espressione regolare non corretta, che genera una chiamata subexp non valida ed errori come Starting google-fluentd 1.8.6: /opt/google-fluentd/embedded/lib/ruby/gems/2.6.0/gems/fluentd-1.11.2/lib/fluent/config/types.rb:92: warning: invalid subexp call. Individua e correggi l'espressione regolare non corretta nel file di configurazione dell'agente. Suggerimento: cerca regex o parse.

Limitazione della velocità effettiva di log

La velocità effettiva massima di log che l'agente Logging può elaborare è limitata alla CPU. L'utilizzo della CPU tende ad aumentare quando aumenta la velocità effettiva del log. Tuttavia, l'agente, con la configurazione predefinita, può utilizzare fino a un solo core CPU. Perciò, quando la velocità effettiva dei log aumenta, l'agente potrebbe raggiungere un limite di utilizzo della CPU. Se questi picchi sono solo temporanei, l'agente Logging esegue il buffer dei log e in seguito riesce a elaborarli. Se la velocità effettiva dei log rimane costantemente elevata, i log potrebbero superare l'overflow del buffer e alla fine andare persi.

In genere, quando ogni voce di log contiene testo non elaborato da 1000 byte e non contiene ulteriore elaborazione del formato, l'agente Logging raggiunge il limite di un core della CPU a circa 5500 voci di log al secondo. Se le voci di log richiedono un'elaborazione avanzata, ad esempio l'analisi JSON o Regex, il numero massimo di voci di log al secondo potrebbe essere inferiore.

Se hai bisogno di una maggiore velocità effettiva dei log, potresti valutare l'uso di Ops Agent. Su Linux, per le voci di log che sono testo non elaborato da 1000 byte e che non prevedono ulteriori elaborazioni, Ops Agent può elaborare circa 160.000 voci di log al secondo.

Dimensione massima del log superata

Se una o più voci di log hanno superato il limite di dimensioni massimo, potresti trovare voci nei log fluentd simili alle seguenti:

Dropping 1 log message(s) error_class="Google::Apis::ClientError" error="Invalid request"


o

Dropping 1 log message(s) error="3:Log entry with size 1000515 bytes exceeds maximum size of 112640 bytes" error_code="3"

Per risolvere questo errore, taglia le voci di log in modo che non superino il limite di dimensione massimo. Ad esempio, il seguente codice campione taglia i log con il tag mytag, con i dati nel campo message:

# Cloud Logging only supports log entries that are up to 256 KiB in size.
# Trim the entries to just under that size to avoid dropping them.
<filter [MY_TAG]>
  @type record_transformer
  enable_ruby true
  <record>
    message ${record['message'].length > 256000 ? "[Trimmed]#{record['message'][0..256000]}..." : record['message']}
  </record>
</filter>

Log duplicati

LogEntry.insertID viene aggiunto alla pipeline di elaborazione all'interno dell'agente. Se insertID è diverso tra i log duplicati, questo indica che i log vengono code più volte dai file di log. Questo può accadere in presenza di rotazione dei log oppure quando il file pos è mancante o danneggiato. Per ridurre le probabilità che questo problema si verifichi, assicurati che i file di posizione per qualsiasi input in_tail non siano configurati per trovarsi nella cartella /var/log o in qualsiasi altra cartella per cui la rotazione dei log potrebbe essere abilitata.

La pipeline di logging si basa anche sul campo LogEntry.timestamp per la deduplicazione dei log. Assicurati che il timestamp effettivo della voce di log sia analizzato correttamente. Se Fluentd non è configurato per analizzare il timestamp originale della voce di log, Fluentd utilizza l'ora in cui elabora la voce di log. Quindi, se l'input viene letto più volte, anche se il timestamp nella riga di log è lo stesso, Fluentd può considerarli come voci di log diverse con timestamp diversi.

Errori ripetuti del log di controllo: Data points cannot be written more than 24h in the past

Esiste un problema noto che interessa le versioni da 1.8.5 a 1.9.3 (incluse), a causa del quale log simili al seguente vengono visualizzati ripetutamente negli audit log di accesso ai dati, dopo che l'agente è stato in esecuzione da oltre 24 ore:

Field timeSeries[0].points[0].interval.end_time had an invalid value of "2021-10-20T20:16:34.010866-07:00": Data points cannot be written more than 24h in the past.

La soluzione è eseguire l'upgrade dell'agente alla versione 1.9.4 o a una versione successiva.

I caratteri Unicode nei log vengono sostituiti da spazi o da " "

Per impostazione predefinita, l'input in_tail prevede che i file di input siano codificati in ASCII, quindi sostituisce qualsiasi carattere non ASCII con uno spazio. Per importare effettivamente file con codifica UTF-8, devi fornire due opzioni nella configurazione in_tail:

<source>
  @type tail
  …

  encoding UTF-8
  from_encoding UTF-8
</source>

Entrambe le opzioni sono necessarie. Se viene specificata solo l'opzione encoding, i caratteri non ASCII nei log importati saranno sostituiti da " ".

Agente rimosso segnalato dalla console Google Cloud come installato

Dopo aver disinstallato l'agente, la console Google Cloud potrebbe impiegare fino a un'ora per segnalare questa modifica.

L'agente Logging non viene visualizzato in Disinstalla un elenco dei programmi di Windows

Per disinstallare l'agente Logging quando non è elencato nell'elenco Disinstalla un programma del Pannello di controllo di Windows, esegui uninstall.exe dalla directory in cui è stato installato.