Quale strumento utilizzare: agente Logging o libreria client?

Questo documento fornisce le informazioni necessarie per decidere se inviare i log delle applicazioni a Cloud Logging in modo programmatico utilizzando le librerie client o un agente Logging. Gli agenti di logging inviano i dati scritti in un file, ad esempio stdout o un file, come log a Cloud Logging. Servizi come Google Kubernetes Engine, l'ambiente flessibile di App Engine e Cloud Run Functions contengono un agente di logging integrato. Per Compute Engine, puoi installare Ops Agent. Questo agente raccoglie i log da posizioni di file note o da servizi di logging come Windows Event Log, journald o syslogd.

Quando non puoi utilizzare una libreria client o un agente Logging oppure quando vuoi solo fare esperimenti, puoi scrivere log utilizzando il comando gcloud logging write o inviando comandi HTTP all'endpoint API Cloud Logging entries.write. L'API Cloud Logging supporta chiamate HTTP e gRPC. Ops Agent e la maggior parte delle librerie client Logging chiamano l'API Logging gRPC. Le librerie client per alcuni linguaggi chiamano l'API REST Logging.

Scegliere un agente o librerie client

Quando scegli tra un agente e le librerie client, considera le seguenti domande:

La tua applicazione viene eseguita al di fuori di Google Cloud?

Se la tua applicazione non è in esecuzione su Google Cloud, devi avere un modo per inviare i log all'API Logging. Per indirizzare i log dai sistemi on-premise a Logging, ti consigliamo di utilizzare Bindplane, che implementa e gestisce i raccoglitori OpenTelemetry per inviare la telemetria a Google Cloud. Per saperne di più, consulta Informazioni su Bindplane.

Bindplane ti consente di raccogliere dati di telemetria da varie origini ed esportarli in Cloud Monitoring e Cloud Logging.

In alternativa, puoi indirizzare i log a Logging direttamente dall'applicazione utilizzando le librerie client. Per gli ambienti effimeri, come il serverless computing, devi utilizzare le librerie client per effettuare chiamate dirette all'API Logging.

Il servizio Google Cloud che esegue la tua applicazione supporta
scrivere contenuti stdout e stderr per il tuo progetto?

Alcuni servizi Google Cloud sono completamente gestiti, quindi non devi utilizzare agenti per inviare i log al tuo progetto Google Cloud . Puoi utilizzare qualsiasi framework di logging consolidato nel linguaggio che preferisci, ad esempio Go, Node.js e Python, per inviare i log a Logging nei prodotti in cui stdout e stderr sono supportati per impostazione predefinita. Un vantaggio dell'utilizzo di stdout e stderr anziché delle librerie client è che gli arresti anomali delle applicazioni non interrompono l'invio dei log al tuo progetto. Per informazioni sull'invio di log strutturati tramite stdout e stderr, consulta la sezione La tua applicazione ha la flessibilità di modificare il formato dei log?.

Puoi utilizzare le librerie client Logging, ma tieni presente che potrebbe introdurre una dipendenza da Logging per i test locali, quando non è necessariamente necessario. L'utilizzo delle librerie client potrebbe anche richiedere una codifica più complessa per gestire esplicitamente il buffering e i tentativi. Inoltre, ogni utilizzo delle librerie client di Logging crea un nuovo stream di connessione all'API. Queste nuove connessioni introducono maggiore complessità, utilizzano porte aggiuntive e inviano richieste separate con solo i log dell'applicazione, il che potrebbe essere uno spreco se non ci sono molti log.

I log dell'applicazione devono essere accessibili nel tuo ambiente locale?

Se devi accedere ai log dell'applicazione nel tuo ambiente locale per il debug e altri scopi, puoi utilizzare i moduli di logging in alcuni linguaggi per l'output in stdout e stderr. Le librerie client di logging per alcune lingue supportano il routing dei log a stdout e stderr.

Quando esegui l'applicazione in servizi che non supportano l'invio automatico dei log scritti in stdout e stderr al tuo progettoGoogle Cloud , puoi raccogliere i log stdout e stderr in file su disco e configurare l'agente in modo che li estragga e li invii a Logging. Google Cloud Per ulteriori informazioni, consulta la guida alla configurazione di Ops Agent.

La procedura di installazione dell'agente è manuale o automatica?

Alcuni servizi installano automaticamente gli agenti o ti consentono di installarli autonomamente. Se il servizio che utilizzi non ti consente di installare agent, devi utilizzare le librerie client per utilizzare Logging.

Fluentd è già in esecuzione nel tuo sistema?

Se Fluentd è già in esecuzione nel tuo sistema e vuoi utilizzare questo daemon per inviare i log a Logging, utilizza il plug-in Logging perGoogle Cloud fluentd.

Stai raccogliendo anche le metriche dell'applicazione per Cloud Monitoring?

Nelle VM di Compute Engine, Ops Agent può raccogliere log e la maggior parte delle metriche. Per saperne di più, consulta Funzionalità di Ops Agent.

Se Ops Agent non copre i tuoi casi d'uso, puoi utilizzare le librerie client di monitoraggio per raccogliere le metriche.

La tua applicazione ha la flessibilità di modificare il formato dei log?

Questa domanda ti aiuta a decidere se la tua applicazione può generare log strutturati. Logging riconosce i log strutturati se li invii all'API Logging nel formato di logging strutturato. Le librerie client forniscono i metodi per gestire questo formato.

Esistono due modi per scrivere log strutturati: uno consiste nell'impostare campi specifici nell'envelope LogEntry e l'altro nell'impostare il campo jsonPayload all'interno dell'envelope LogEntry. Lo schema del primo è determinato da Cloud Logging, mentre lo schema del secondo è determinato dall'utente.

Devi configurare l'agente in modo che riconosca i log strutturati. Per impostazione predefinita, gli agenti sono configurati per rilevare i log in formato JSON e per gestirli come log strutturati. Se la tua applicazione ha un proprio formato di log che non puoi modificare, ma vuoi che i log vengano riconosciuti come strutturati, devi scrivere i log nel formato di logging strutturato, di solito JSON, in stdout e stderr, in modo che gli agenti possano riconoscerli come log strutturati. In caso contrario, devi configurare l'agente in modo che comprenda il tuo formato.

Riepilogo di ogni opzione

  • Librerie client di Cloud Logging

    • Vantaggi

      • Puoi instradare i log direttamente all'API Cloud Logging.
      • Alcune lingue possono generare log in stdout e stderr utilizzando la libreria.
    • Svantaggi

      • Gli arresti anomali dell'applicazione interrompono l'invio dei log al tuo progetto Google Cloud .
  • Ops Agent

    • Vantaggi

      • L'Ops Agent può inviare log e metriche utilizzando tecnologie open source stabili: Fluent Bit per la raccolta dei log e OpenTelemetry Collector per la raccolta delle metriche.
      • Puoi raccogliere log e metriche da molte applicazioni comuni. Consulta Monitorare e raccogliere log da applicazioni di terze parti.
      • Puoi conservare i log nel tuo ambiente locale.
      • Potresti essere in grado di recuperare i log dagli arresti anomali delle applicazioni.
      • Ops Agent è in fase di sviluppo attivo.
    • Svantaggi

      • Fluent Bit supporta solo la codifica UTF-8. Non supporta la conversione della codifica.
  • Log di stdout e stderr inviati automaticamente al tuo progetto Google Cloud

    • Vantaggi
      • Questa procedura è un modo comune per emettere log negli ambienti locali.
      • Puoi utilizzare librerie di logging arbitrarie.
      • Potresti essere in grado di recuperare i log dagli arresti anomali delle applicazioni.
    • Svantaggi
      • Non tutti gli ambienti indirizzano automaticamente i log a Logging.