In questa pagina vengono descritti i log disponibili quando si utilizza Cloud Run e come visualizzare e scrivere i log.
Cloud Run include due tipi di log, che vengono inviati automaticamente a Cloud Logging:
- Log delle richieste (solo servizi): log delle richieste inviate ai servizi Cloud Run. Questi log vengono creati automaticamente.
- Log dei container (servizi e job): log emessi dalle istanze, in genere dal tuo codice, scritti nelle posizioni supportate come descritto in Scrittura dei log dei container.
Visualizza i log
Puoi visualizzare i log per il servizio o il job in diversi modi:
- Utilizzare la pagina Cloud Run nella console Google Cloud
- Utilizza Google Cloud CLI per visualizzare i log con gcloud (solo servizi)
- Utilizza Esplora log di Cloud Logging nella console Google Cloud
- Utilizza Cloud Code
Entrambi i metodi di visualizzazione dei log della console esaminano gli stessi log archiviati in Cloud Logging, ma Esplora log di Cloud Logging offre maggiori dettagli e funzionalità di filtro.
Visualizza i log in Cloud Run
Puoi visualizzare i log per servizi e job nelle pagine relative a servizi e job corrispondenti.
Visualizzare i log di un servizio
Per visualizzare i log di servizio nella pagina Cloud Run:
Fai clic sul servizio che ti interessa nell'elenco visualizzato.
Fai clic sulla scheda LOG per ottenere i log delle richieste e dei container per tutte le revisioni di questo servizio. Puoi filtrare in base al livello di gravità dei log.
Visualizza i log per un job
Per visualizzare i log dei job nella pagina Cloud Run:
Fai clic sulla scheda JOB.
Individua il job nell'elenco dei job e fai clic su di esso.
Fai clic sulla scheda LOG per ottenere i log dei container per tutte le esecuzioni di questo job. Puoi filtrare in base al livello di gravità dei log.
In alternativa, se vuoi visualizzare i log prefiltrati per un'esecuzione di job specifica, fai clic sull'esecuzione del job e poi sulla scheda LOG.
Visualizza i log di servizio utilizzando Google Cloud CLI
Puoi utilizzare Google Cloud CLI per visualizzare i log di tailing o leggere i log esistenti per un servizio Cloud Run nella riga di comando. Per impostazione predefinita, i log sono formattati in un formato a riga singola ottimizzato per la console.
Per eseguire il tail dei log, devi installare il componente log-streaming
in
Google Cloud CLI. Se il componente non è installato, ti verrà chiesto di installarlo quando necessario.
Visualizza i log di tailing nella riga di comando
Per un servizio Cloud Run, puoi eseguire il tail dei log in tempo reale dal servizio Cloud Run direttamente nella riga di comando:
gcloud beta run services logs tail SERVICE --project PROJECT-ID
Sostituisci
- SERVICE con il nome del servizio Cloud Run
- PROJECT-ID con l'ID progetto Google Cloud. Puoi visualizzare il tuo
ID progetto eseguendo il comando
gcloud config get-value project
.
Leggi i log nella riga di comando
Per un servizio Cloud Run, puoi leggere i log esistenti in uno dei due seguenti modi:
- In un formato ottimizzato per la console:
gcloud beta run services logs read SERVICE --limit=10 --project PROJECT-ID
- Direttamente da Cloud Logging:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE" --project PROJECT-ID --limit 10
Sostituisci
- SERVICE con il nome del servizio Cloud Run
- PROJECT-ID con l'ID progetto Google Cloud. Puoi visualizzare il tuo
ID progetto eseguendo il comando
gcloud config get-value project
.
Visualizza i log in Cloud Logging
Per visualizzare i log di Cloud Run in Esplora log di Cloud Logging:
Vai alla pagina Esplora log nella console Google Cloud:
Seleziona un progetto Google Cloud esistente nella parte superiore della pagina o creane uno nuovo.
Utilizzando i menu a discesa, seleziona la risorsa Revisione Cloud Run per un servizio o Cloud Run Job per un job.
Per ulteriori informazioni, consulta Utilizzo di Esplora log.
Visualizza i log di servizio in Cloud Code
Per visualizzare i log in Cloud Code, leggi le guide relative a IntelliJ e Graphic Studio Code.
Leggi i log in modo programmatico
Se vuoi leggere i log in modo programmatico, puoi utilizzare uno di questi metodi:
- Utilizza un sink di log in Pub/Sub e uno script per il pull da Pub/Sub.
- Chiama l'API Logging tramite le librerie client per il tuo linguaggio di programmazione.
- Chiama direttamente gli endpoint REST dell'API Logging.
Scrivi log dei container
Quando scrivi log dal servizio o dal job, questi verranno acquisiti automaticamente da Cloud Logging, purché siano scritti in una di queste posizioni:
- Stream di output standard (
stdout
) o di errore standard (stderr
) - Tutti i file nella directory
/var/log
- syslog (
/dev/log
) - Log scritti utilizzando le librerie client di Cloud Logging, disponibili per molti dei linguaggi più diffusi
La maggior parte degli sviluppatori dovrebbe scrivere i log utilizzando l'output standard e l'errore standard.
I log dei container scritti in queste località supportate vengono automaticamente associati al servizio, alla revisione e alla località Cloud Run o al job Cloud Run. Le eccezioni contenute in questi log vengono acquisite e riportate in Error Reporting.
Utilizzare testo semplice e JSON strutturato nei log
Quando scrivi log, puoi inviare una semplice stringa di testo o una singola riga di JSON serializzato, detti anche dati "strutturati". Viene raccolto ed analizzato da Cloud Logging e inserito in jsonPayload
. Al
contrario, il semplice SMS viene inserito in textPayload
.
Scrittura di log strutturati
Lo snippet seguente mostra come scrivere voci di log strutturate. Illustra inoltre come correlare i messaggi di log al log delle richieste corrispondente.
Node.js
Python
Go
La struttura di ogni voce di log è fornita da un tipo Entry
:
Quando viene registrato uno struct di voce, il metodo String
viene chiamato per marshallare nel
formato JSON previsto da Cloud Logging:
Java
Abilita il logging JSON con Logback e SLF4J attivando Logstash JSON Encoder nella configurazione di logback.xml
.
Personalizza i nomi dei campi standard per escludere contenuti indesiderati dall'importazione nel payload dei log. Per un elenco dei nomi dei campi e dei formati di dati previsti, consulta Utilizzare l'agente Logging.
Campi JSON speciali nei messaggi
Quando fornisci un log strutturato come dizionario JSON, alcuni campi speciali vengono eliminati da jsonPayload
e scritti nel campo corrispondente nella LogEntry generata, come descritto nella documentazione relativa ai campi speciali.
Ad esempio, se JSON include una proprietà severity
, viene rimossa da jsonPayload
e viene visualizzata al suo posto come severity
della voce di log.
La proprietà message
viene utilizzata come testo visualizzato principale della voce di log, se presente.
Per saperne di più sulle proprietà speciali, leggi la sezione Risorsa di Logging di seguito.
Correlare i log dei container con un log delle richieste (solo servizi)
In Esplora log, i log correlati allo stesso trace
sono visibili nel formato "padre-figlio": quando fai clic sull'icona a forma di triangolo a sinistra della voce di log delle richieste, i log dei container relativi alla richiesta vengono visualizzati nidificati sotto il log delle richieste.
I log dei container non vengono automaticamente correlati ai log delle richieste, a meno che non utilizzi una libreria client di Cloud Logging.
Per correlare i log dei container ai log delle richieste senza utilizzare una libreria client, puoi utilizzare una riga di log JSON strutturata contenente un campo logging.googleapis.com/trace
con l'identificatore di traccia estratto dall'intestazione X-Cloud-Trace-Context
come mostrato nell'esempio sopra per il logging strutturato.
Controlla l'utilizzo delle risorse di log delle richieste (solo servizi)
I log delle richieste vengono creati automaticamente. Anche se non puoi controllare la quantità di log delle richieste direttamente da Cloud Run, puoi utilizzare la funzionalità di esclusione dei log di Cloud Logging.
Una nota sugli agenti Logging
Se hai utilizzato Cloud Logging con determinati prodotti Google Cloud, come Compute Engine, potresti aver utilizzato agenti di logging di Cloud Logging. Cloud Run non utilizza gli agenti di logging perché dispone di supporto integrato per la raccolta dei log.
Nomi delle risorse di logging
I nomi delle risorse di logging per Cloud Run sono:
- Revisione Cloud Run (
cloud_run_revision
). - Job Cloud Run (
cloud_run_job
).
Risorse di Logging
Se fai clic su una voce di log in Esplora log, viene aperta una voce di log in formato JSON che ti consente di visualizzare in dettaglio i dettagli che ti interessano.
Tutti i campi di una voce di log, ad esempio timestamp, gravità e httpRequest
, sono standard e sono descritti nella documentazione per una voce di log.
Cloud Run aggiunge altri metadati, in modo che tu possa identificare l'origine di un log. Sono incluse le etichette che imposti sul servizio Cloud Run e le etichette delle risorse specifiche per Cloud Run.
Campi di immissione del log per un servizio
Di seguito è riportato un elenco dei campi che si possono trovare nella voce di log per un servizio Cloud Run:
Campo | Valori e note |
---|---|
LogEntry.labels.instanceId |
L'istanza che ha gestito la richiesta. |
LogEntry.labels. mylabel LogEntry.labels. mysecondlabel |
Le etichette che hai impostato sul servizio. |
LogEntry.logName |
Identifica il log, ad esempio log della richiesta, errore standard, output standard e così via. |
LogEntry.resource.labels.location |
Identifica la località Google Cloud del servizio. |
LogEntry.resource.labels.project_id |
Il progetto in cui viene eseguito il deployment del servizio. |
LogEntry.resource.labels.revision_name |
La revisione che ha soddisfatto la richiesta. |
LogEntry.resource.labels.service_name |
Il servizio che ha pubblicato la richiesta. |
LogEntry.resource.type |
cloud_run_revision . Il tipo di risorsa Cloud Run. |
Ecco un esempio di voce di log della richiesta per un servizio Cloud Run:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
mylabel: "mylabelvalue"
mysecondlabel: "mysecondlabelvalue"
}
logName: "projects/my-project/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "us-central1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
Campi di immissione del log per i job
Di seguito è riportato un elenco di campi che si possono trovare nella voce di log per un job Cloud Run:
Campo | Valori e note |
LogEntry.labels.instanceId | L'istanza. |
LogEntry.labels.mylabel,
LogEntry.labels.mysecondlabel |
Le etichette che hai impostato nel job. |
LogEntry.logName | Identifica il log, ad esempio log della richiesta, errore standard, output standard e così via. |
LogEntry.resource.labels.location | Identifica la località Google Cloud del servizio. |
LogEntry.resource.labels.project_id | Il progetto in cui viene eseguito il deployment del servizio. |
LogEntry.resource.labels.job_name | Il nome del job. |
LogEntry.labels.execution_name | Il nome dell'esecuzione del job. |
LogEntry.labels.task_index | L'indice dell'attività. |
LogEntry.labels.task_attempt | Numero di tentativi di questa attività. |
LogEntry.resource.type | cloud_run_job. Il tipo di risorsa Cloud Run. |