Questa pagina descrive i log disponibili per le app App Engine e come scrivere, correlare e visualizzare le voci di log.
App Engine raccoglie tre tipi di log:
Log delle richieste: i log delle richieste inviate all'app. Per impostazione predefinita, App Engine emette automaticamente una voce di log per ogni richiesta HTTP ricevuta da un'app.
Log dell'app: voci di log emesse da un'app di App Engine in base alle voci di log scritte in un file o framework supportato.
Log di sistema: log generati dalla piattaforma contenenti informazioni sulla tua app. Questi log vengono scritti in
varlog/system
.
App Engine invia automaticamente sia i log delle richieste sia i log delle app all'agente Cloud Logging.
Scrittura dei log delle app
App Engine genera automaticamente i log per le richieste inviate alla tua app, quindi non è necessario scrivere log delle richieste. Questa sezione spiega come scrivere i log dell'app.
Quando scrivi log dall'app App Engine, i log vengono prelevati automaticamente da Cloud Logging, purché i log vengano scritti utilizzando seguenti metodi:
Integra con Cloud Logging
Puoi integrare la tua app App Engine con Cloud Logging. Questo approccio ti consente di utilizzare tutte le funzionalità offerte da Cloud Logging e richiede solo poche righe di codice specifico di Google.
Scrivere log strutturati in stdout
e stderr
Per impostazione predefinita, App Engine utilizza la libreria client di Cloud Logging per inviare i log.
Tuttavia, questo metodo non supporta il logging strutturato. Puoi scrivere
log strutturati solo utilizzando stdout/stderr
. Inoltre, puoi inviare stringhe di testo
stdout
e stderr
. Per impostazione predefinita, il payload di log
stringa di testo memorizzata nel campo textPayload
della voce di log. Le stringhe
vengono visualizzati come messaggi in Esplora log, nella riga di comando e
API Cloud Logging e sono associati al servizio App Engine
e la versione da cui sono stati generati.
Per ottenere un valore maggiore dai log, puoi filtrare queste stringhe in Esplora log in base al livello di gravità. Per filtrare queste stringhe, devi formattare le stringhe come
dati strutturati.
Per farlo, scrivi i log sotto forma di singola riga di JSON serializzato. App Engine rileva e analizza questa riga JSON serializzata,
e lo inserisce nel campo jsonPayload
della voce di log anziché in textPayload
.
Nell'ambiente standard di App Engine, la scrittura di log strutturati in stdout
e stderr
non viene conteggiata ai fini della quota di richieste di importazione dei log al minuto nell'API Cloud Logging.
Campi JSON speciali nei messaggi
Quando fornisci un log strutturato come dizionario JSON, alcuni campi speciali vengono rimossi da jsonPayload
e scritti nel campo corrispondente nel LogEntry generato, come descritto nella documentazione per i campi speciali.
Ad esempio, se il file JSON include una proprietà severity
, viene rimossa da
jsonPayload
e viene visualizzato come severity
della voce di log.
La proprietà message
viene utilizzata come testo di visualizzazione principale della voce di log, se presente.
Correla i log delle richieste con i log delle app
Dopo aver formattato le voci come oggetto JSON e aver fornito metadati specifici, puoi abilitare l'applicazione di filtri e la correlazione con i log delle richieste. Per correlare le voci di log della richiesta alle voci di log dell'app, è necessario il valore identificatore della traccia. Segui le istruzioni per correlare i messaggi di log:
- Estrai l'identificatore della traccia dall'intestazione della richiesta
X-Cloud-Trace-Context
. - Nella voce del log strutturato, scrivi l'ID in un campo denominato
logging.googleapis.com/trace
. Per ulteriori informazioni sull'intestazioneX-Cloud-Trace-Context
, consulta Forza il tracciamento di una richiesta.
Per visualizzare i log correlati, consulta Visualizzare le voci di log correlate in Esplora log.
Visualizza i log
Puoi visualizzare i log delle app e delle richieste in diversi modi:
- Utilizza Esplora log da Cloud Logging nella console Google Cloud.
- Utilizza Google Cloud CLI per visualizzare i log utilizzando gcloud.
- Leggi i log a livello di programmazione utilizzando vari metodi.
Utilizza Esplora log
Puoi visualizzare i log delle app e delle richieste utilizzando il Esplora log:
Vai a Esplora log nella console Google Cloud:
Seleziona un progetto Google Cloud esistente nella parte superiore della pagina.
In Tipo di risorsa, seleziona GAE Application.
Puoi filtrare Logs Explorer in base al servizio App Engine, alla versione e ad altri criteri. Puoi anche cercare nei log voci specifiche. Consulta Utilizzare Esplora log per maggiori dettagli.
Se invii voci di testo semplici all'output standard, non puoi utilizzare Log Viewer per filtrare le voci dell'app in base alla gravità né vedere quali log dell'app corrispondono a richieste specifiche. Puoi continuare a utilizzare altri tipi di filtri in Esplora log, come testo e timestamp.
Visualizzare le voci di log correlate in Esplora log
In Esplora log, per visualizzare le voci di log figlio correlate a un'etichetta ed espandi la voce di log.
Ad esempio, per visualizzare la voce del log delle richieste di App Engine e il log dell'applicazione procedi nel seguente modo:
Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi Esplora log:
In Tipo di risorsa, seleziona Applicazione GAE.
Per visualizzare e correlare i log delle richieste, in Nome log, seleziona request_log. In alternativa, per eseguire la correlazione in base ai log delle richieste, fai clic su Correla in base a e seleziona request_log.
Nel riquadro Risultati delle query, per espandere una voce di log, fai clic su Espandi. All'espansione, ogni log delle richieste mostrerà i log delle app associati.
Dopo aver creato un filtro per i log, ogni log delle richieste mostra i log corrispondenti
i log delle app come log secondari. Esplora log raggiunge questo risultato mettendo in correlazione
il campo trace
nei log dell'app e un determinato log delle richieste, presupponendo che l'applicazione
usa la libreria google-cloud-logging
.
L'immagine seguente mostra i log delle app raggruppati in base al campo trace
:
Utilizza Google Cloud CLI
Per visualizzare i log di App Engine dalla riga di comando, utilizza il seguente comando:
gcloud app logs tail
Per ulteriori informazioni, consulta gcloud app logs tail.
Lettura dei log in modo programmatico
Se vuoi leggere i log in modo programmatico, puoi utilizzare uno di questi metodi:
- Utilizza un destinatario dei log in Pub/Sub e uno script per eseguire il pull da Pub/Sub.
- Chiama l'API Cloud Logging tramite libreria client per il tuo linguaggio di programmazione.
- Chiama direttamente gli endpoint REST dell'API Cloud Logging.
Informazioni sui log di scalabilità delle istanze
Quando vengono avviate nuove istanze per la tua app, Cloud Logging
include voci di log sotto il nome log varlog/system
per riflettere il motivo di ogni
è stata creata. La voce del log segue questo formato:
Starting new instance. Reason: REASON - DESCRIPTION
La seguente tabella fornisce un'analisi dettagliata delle descrizioni delle istanze:
Motivo | Descrizione |
---|---|
CUSTOMER_MIN_INSTANCE |
Istanza minima configurata dal cliente per l'app. |
SCHEDULED |
L'istanza è stata avviata a causa di fattori di scalabilità configurati (ad es. utilizzo della CPU, velocità effettiva delle richieste e così via) e dei relativi target. |
OVERFLOW |
L'istanza è stata avviata perché non è stata trovata alcuna capacità esistente per il traffico attuale. |
Prezzi, quote e criterio di conservazione dei log
Per informazioni sui prezzi applicabili sia ai log delle richieste sia a quelli delle app, consulta Prezzi di Cloud Logging.
Per il criterio di conservazione dei log e la dimensione massima delle voci di log, consulta Quote e limiti. Se vuoi archiviare i log per un periodo più lungo, puoi esportarli in Cloud Storage. Puoi anche esportare i log in BigQuery e Pub/Sub per un'ulteriore elaborazione.
Gestione dell'utilizzo delle risorse di log
Puoi controllare la quantità di attività di registrazione nei log dell'app scrivendo più o meno voci dal codice dell'app. I log delle richieste vengono creati automaticamente, quindi per gestire il numero di voci dei log delle richieste associate alla tua app, utilizza la funzionalità di esclusione dei log di Cloud Logging.
Problemi noti
Di seguito sono riportati alcuni problemi di registrazione nei runtime di seconda generazione:
A volte le voci di log dell'app non sono correlate al log delle richieste. Questo accade la prima volta che l'app riceve una richiesta e in qualsiasi altro momento App Engine scrive messaggi di stato nel log dell'app. Per ulteriori informazioni, visita la pagina https://issuetracker.google.com/issues/138365527.
Quando inoltri i log dall'obiettivo di log a Cloud Storage, la destinazione Cloud Storage contiene solo i log delle richieste. App Engine scrive i log delle app in diverse cartelle.
BigQuery non riesce a importare i log a causa del campo
@type
nei log delle richieste. Ciò interrompe il rilevamento automatico dello schema, poiché BigQuery non consente@type
nei nomi dei campi. Per risolvere questo problema, devi definire manualmente lo schema e rimuovere Campo@type
dei log delle richieste.Se utilizzi le API REST di logging, un thread in background scrive i log in Cloud Logging. Se il thread principale non è attivo, l'istanza non riceve tempo della CPU, il che causa l'interruzione del thread in background. Il tempo di elaborazione dei log è in ritardo. Alle ore A un certo punto, l'istanza viene rimossa e tutti i log non inviati andranno persi. Per evitare di perdere i log, utilizza una delle seguenti opzioni:
- Configura l'SDK Cloud Logging in modo che utilizzi gRPC. Con gRPC, i log vengono inviati e Cloud Logging immediatamente. Tuttavia, questo può aumentare i limiti della CPU richiesti.
- Invia messaggi di log a Cloud Logging utilizzando
stdout/stderr
. Questa pipeline è al di fuori dell'istanza App Engine e non viene limitata.
Passaggi successivi
- Consulta Monitora e avvisa sulla latenza per scoprire come utilizzare Cloud Logging per visualizzare i log relativi agli errori di debug e come utilizzare Cloud Trace per comprendere la latenza dell'app.