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.

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
stdoutestderrper 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
stdoutestderrsono supportati per impostazione predefinita. Un vantaggio dell'utilizzo distdoutestderranziché 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 tramitestdoutestderr, 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
stdoutestderr. Le librerie client di logging per alcune lingue supportano il routing dei log astdoutestderr.Quando esegui l'applicazione in servizi che non supportano l'invio automatico dei log scritti in
stdoutestderral tuo progettoGoogle Cloud , puoi raccogliere i logstdoutestderrin 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
LogEntrye l'altro nell'impostare il campojsonPayloadall'interno dell'envelopeLogEntry. 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
stdoutestderr, 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
stdoutestderrutilizzando 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
stdoutestderrinviati 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.
- Vantaggi