Quale metodo devi utilizzare: agente Logging o libreria client?

Questo documento fornisce le informazioni di cui hai bisogno per aiutarti a decidere per inviare in modo programmatico i log delle applicazioni a Cloud Logging utilizzando librerie client o mediante un di registrazione. Gli agenti di logging inviano dati scritti in un file, ad esempio stdout o un file, come log in Cloud Logging. Servizi come Google Kubernetes Engine, l'ambiente flessibile di App Engine e Cloud Functions, contengono un di registrazione. Per Compute Engine, puoi installare Ops Agent o l'agente Cloud Logging legacy. Questi agenti raccolgono i log da posizioni o log noti dei file. servizi come Windows Event Log, journald o syslogd.

Quando non puoi utilizzare una libreria client o un agente Logging oppure quando vuoi sperimentare solo i log, puoi scrivere i log utilizzando gcloud logging write oppure inviando comandi HTTP all'endpoint API Cloud Logging entries.write. L'API Cloud Logging supporta sia Chiamate HTTP e gRPC. Ops Agent e la maggior parte dei client Logging e le librerie chiamano l'API Logging gRPC. La versione legacy di Logging per alcuni linguaggi chiama REST l'API Logging.

Scelta di un agente o delle librerie client

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

La tua applicazione è in esecuzione al di fuori di Google Cloud?

Se la tua applicazione non è in esecuzione su Google Cloud, devi per inviare i log all'API Logging. Per eseguire il routing dei log da sistemi on-premise a Logging, ti consigliamo di utilizzare BindPlane per observIQ. Per ulteriori informazioni su BindPlane, vedi Informazioni su observIQ e BindPlane.

In alternativa, puoi eseguire il routing dei log a Logging direttamente da l'applicazione utilizzando le librerie client. Per gli ambienti temporanei, come il serverless computing, devi usare le librerie client per rendere chiamate all'API Logging.

Il servizio Google Cloud che esegue la tua applicazione supporta
stai scrivendo contenuti stdout e stderr nel tuo progetto?

Alcuni servizi Google Cloud sono completamente gestiti, quindi non è necessario per utilizzare gli agenti per inviare log al tuo progetto Google Cloud. Puoi utilizzare qualsiasi di registrazione di Google Cloud il linguaggio che preferisci, come Go, Node.js e Python, per inviare i log Accesso ai prodotti che supportano stdout e stderr per impostazione predefinita. Un vantaggio di poter contare su stdout e stderr anziché utilizzare le librerie client è che gli arresti anomali dell'applicazione non si interrompono e inviare log al tuo progetto. Per informazioni sull'invio log strutturati tramite stdout e stderr, vedi la sezione L'applicazione ha la flessibilità necessaria per modificare il formato del log?.

Puoi utilizzare le librerie client di Logging, ma tieni presente che potrebbe introdurre una dipendenza su Logging per i test locali, quando non ti serve necessariamente. L'utilizzo delle librerie client potrebbe anche richiedono una codifica più complessa per gestire in modo esplicito il buffering e i nuovi tentativi. Inoltre, ogni utilizzo delle librerie client di Logging crea una nuova di connessione all'API. Queste nuove connessioni introducono complessità, utilizzare porte aggiuntive e inviare richieste separate solo con log dell'applicazione, il che potrebbe generare uno spreco se non logaritmi.

I log delle applicazioni devono essere accessibili nel tuo ambiente locale?

Se hai bisogno di accedere ai log delle applicazioni nel tuo ambiente locale, per debug e per altri scopi, puoi utilizzare i moduli di logging in lingue da inviare in stdout e stderr. Client di logging le librerie per alcuni linguaggi supportano i log di routing in stdout e stderr.

Quando esegui la tua applicazione in servizi Google Cloud che non supportano inviando automaticamente i log scritti in stdout e stderr al tuo progetto Google Cloud, puoi raccogliere stdout e stderr accedono ai file su disco e configura l'agente per eseguirne lo scraping e inviarli a Logging. Per ulteriori informazioni, consulta la guida alla configurazione per Ops Agent o l'agente Logging legacy.

Il processo di installazione dell'agente è manuale o automatico?

Alcuni servizi installano gli agenti automaticamente o ti consentono di installare gli agenti per te. Se il servizio che stai utilizzando non ti consente di installare gli agenti, devi utilizzare le librerie client per utilizzare Logging.

Usi già Fluentd nel tuo sistema?

L'agente Logging legacy è basato su Fluentd.

Se Fluentd è già in esecuzione nel tuo sistema e vuoi usa quel daemon per inviare i tuoi log a Logging, quindi utilizza plug-in di Google Cloud Logging per fluente.

Stai raccogliendo anche le metriche delle applicazioni per Cloud Monitoring?

Nelle VM di Compute Engine, Ops Agent può raccogliere i log e la maggior parte delle metriche. Consulta Funzionalità di Ops Agent per ulteriori informazioni.

Se Ops Agent non si occupa dei tuoi casi d'uso, puoi utilizzare agente Monitoring legacy o Monitoraggio delle librerie client per raccogliere le metriche.

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

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

Esistono due modi per scrivere log strutturati: uno è impostare campi specifici nella busta LogEntry, e l'altra è impostare il campo jsonPayload all'interno del campo LogEntry busta. Lo schema per il primo è determinato da Cloud Logging, mentre lo schema di quest'ultimo è determinato dall'utente.

Devi configurare l'agente in modo che riconosca i log strutturati. Per impostazione predefinita, gli agenti sono configurati in modo da rilevare i log in formato JSON e e gestirle 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 registrazione strutturata, JSON in stdout e stderr, in modo che gli agenti possano riconoscerli come e log strutturati. In caso contrario, devi configurare l'agente per comprendere le formato personalizzato.

Riepilogo di ciascuna opzione

Diagramma dei pattern di logging

  • Librerie client di Cloud Logging

    • Vantaggi

      • Puoi eseguire il routing dei log direttamente all'API Cloud Logging.
      • Alcune lingue possono inviare log in stdout e stderr utilizzando il metodo libreria.
    • Svantaggi

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

    • Vantaggi
      • 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 sia log che metriche da molte applicazioni; consulta Monitorare e raccogliere i log da terze parti applicazioni.
      • Puoi conservare i log nel tuo ambiente locale.
      • Potresti riuscire a recuperare i log in caso di arresti anomali dell'applicazione.
      • Ops Agent è in fase di sviluppo attivo.
  • Agente Logging legacy

    • Vantaggi
      • L'agente utilizza Fluentd per raccogliere i log.
      • Puoi conservare i log nel tuo ambiente locale.
      • Potresti riuscire a recuperare i log in caso di arresti anomali dell'applicazione.
    • Svantaggi
      • L'agente è attualmente supportato, ma non è in fase di sviluppo attivo.
  • Log di stdout e stderr inviati automaticamente al tuo progetto Google Cloud

    • Vantaggi
      • Questo processo è un modo comune per inviare log ad ambienti locali.
      • Puoi utilizzare librerie di logging arbitrarie.
      • Potresti riuscire a recuperare i log in caso di arresti anomali dell'applicazione.
    • Svantaggi
      • Non tutti gli ambienti instradano automaticamente i log a Logging.