Questa pagina descrive i log disponibili quando utilizzi Cloud Run e come visualizzarli e scriverli.
Cloud Run ha 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): i log emessi dalle istanze, in genere dal tuo codice, scritti nelle posizioni supportate come descritto in Scrivere log dei container.
Visualizza i log
Puoi visualizzare i log per il tuo servizio o job in diversi modi:
- Utilizzare la pagina Cloud Run nella console Google Cloud
- Utilizzare Google Cloud CLI per visualizzare i log utilizzando gcloud (solo servizi)
- Utilizzare Esplora log di Cloud Logging nella console Google Cloud
- Utilizzare Cloud Code
Entrambi i metodi della console per visualizzare i log esaminano gli stessi log archiviati in Cloud Logging, ma Esplora log di Cloud Logging fornisce più dettagli e più funzionalità di filtro.
Visualizzare i log in Cloud Run
Puoi visualizzare i log per i servizi e i job nelle pagine corrispondenti.
Visualizzare i log di un servizio
Per visualizzare i log dei servizi nella pagina Cloud Run:
Fai clic sul servizio che ti interessa nell'elenco visualizzato.
Fai clic sulla scheda LOG per visualizzare i log delle richieste e dei contenitori per tutte le revisioni di questo servizio. Puoi filtrare in base al livello di gravità del log.
Visualizzare i log di 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 sul job.
Fai clic sulla scheda LOG per visualizzare i log del contenitore per tutte le esecuzioni di questo job. Puoi filtrare in base al livello di gravità del 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.
Visualizzare i log di servizio utilizzando Google Cloud CLI
Puoi utilizzare Google Cloud CLI per visualizzare i log di monitoraggio 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 seguire i log, devi installare il componente log-streaming
in Google Cloud CLI. Se il componente non è installato, ti verrà chiesto di installarlo quando necessario.
Visualizzare i log di monitoraggio nella riga di comando
Per un servizio Cloud Run, puoi monitorare i 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
.
Leggere i log nella riga di comando
Per un servizio Cloud Run, puoi leggere i log esistenti in due modi:
- In un formato ottimizzato per la console:
gcloud 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 crea un nuovo progetto.
Utilizzando i menu a discesa, seleziona la risorsa Revisione Cloud Run per un servizio o Job Cloud Run per un job.
Per ulteriori informazioni, consulta Utilizzare Esplora log.
Visualizzare i log di servizio in Cloud Code
Per visualizzare i log in Cloud Code, consulta le guide di IntelliJ e Visual Studio Code.
Leggere i log in modo programmatico
Se vuoi leggere i log in modo programmatico, puoi utilizzare uno dei seguenti metodi:
- Utilizza un destinatario dei log in Pub/Sub e uno script per eseguire 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.
Scrivere log dei container
Quando scrivi i log dal tuo servizio o job, vengono rilevati automaticamente da Cloud Logging, a condizione che vengano 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 linguaggi comuni
La maggior parte degli sviluppatori dovrebbe scrivere i log utilizzando l'output standard e l'errore standard.
I log del contenitore scritti in queste posizioni supportate vengono automaticamente associati al servizio, alla revisione e alla posizione di Cloud Run o al job Cloud Run. Le eccezioni contenute in questi log vengono acquisite e registrate in Error Reporting.
La registrazione integrata bilancia l'affidabilità e l'utilizzo delle risorse e dovrebbe funzionare per la maggior parte delle applicazioni. La scrittura delle voci di log utilizzando il logging integrato non
consuma la quota per il numero di richieste entries.write
al minuto dell'
API Cloud Logging.
Se la tua applicazione ha requisiti di volume o affidabilità più elevati, ti consigliamo di utilizzare direttamente l'API Cloud Logging, come libreria all'interno dell'applicazione o come contenitore sidecar separato.
Utilizzare testo semplice o JSON strutturato nei log
Quando scrivi i log, puoi inviare una semplice stringa di testo o una singola riga di JSON serializzato, chiamati anche dati "strutturati". Viene rilevato e interpretato da Cloud Logging e inserito in jsonPayload
. In
contrasto, il messaggio di testo semplice viene inserito in textPayload
.
Scrittura di log strutturati
Lo snippet seguente mostra come scrivere voci di log strutturate. Inoltre, mostra come correlare i messaggi di log con il log delle richieste corrispondente.
Node.js
Python
Vai
La struttura di ogni voce di log è fornita da un tipo Entry
:
Quando viene registrato un oggetto Entry, viene chiamato il metodo String
per eseguirlo nel formato JSON previsto da Cloud Logging:
Java
Attiva la registrazione JSON con Logback e SLF4J attivando l'codificatore JSON di Logstash nella configurazione di logback.xml
.
Personalizza i nomi dei campi standard per escludere l'importazione di contenuti indesiderati nel payload dei log. Per un elenco dei nomi dei campi e dei formati di dati previsti, consulta Utilizzare l'agente di 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 tuo JSON include una proprietà severity
, viene rimossa dal jsonPayload
e viene visualizzata come severity
della voce di log.
La proprietà message
viene utilizzata come testo di visualizzazione principale della voce di log, se presente.
Per saperne di più sulle proprietà speciali, consulta la sezione Risorsa di logging riportata di seguito.
Correlare i log del contenitore con un log delle richieste (solo servizi)
In Esplora log, i log correlati dallo stesso trace
sono visualizzabili in formato "principale-secondario": quando fai clic sull'icona a forma di triangolo a sinistra della voce di log della richiesta, i log del contenitore relativi a quella richiesta vengono visualizzati nidificati sotto il log della richiesta.
I log dei container non sono correlati automaticamente ai log delle richieste, a meno che non utilizzi una
libreria client di Cloud Logging.
Per correlare i log dei contenitori con i 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 traccia estratto dall'X-Cloud-Trace-Context
intestazione come mostrato nell'esempio precedente per
log strutturati.
Controllare l'utilizzo delle risorse dei 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 di logging
Se hai utilizzato Cloud Logging con determinati prodotti Google Cloud, come Compute Engine, potresti aver utilizzato gli agenti di logging di Cloud Logging. Cloud Run non utilizza agenti di logging perché ha il 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, si apre una voce di log in formato JSON per consentirti di visualizzare i dettagli che ti interessano.
Tutti i campi di una voce di log, come timestamp, gravità e httpRequest
sono standard e sono descritti nella documentazione relativa a una
voce di log.
Cloud Run aggiunge metadati aggiuntivi per consentirti di identificare l'origine di un log. Sono incluse le etichette impostate sul servizio Cloud Run e le etichette delle risorse specifiche per Cloud Run.
Campi delle voci di log per un servizio
Di seguito è riportato un elenco dei campi che puoi trovare nella voce di log di 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 impostate da te sul servizio. |
LogEntry.logName |
Identifica il log, ad esempio log delle richieste, errore standard, output standard e così via. |
LogEntry.resource.labels.location |
Identifica la posizione di Google Cloud del servizio. |
LogEntry.resource.labels.project_id |
Il progetto in cui è stato 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 soddisfatto la richiesta. |
LogEntry.resource.type |
cloud_run_revision . Il tipo di risorsa Cloud Run. |
Ecco un esempio di voce di log delle richieste 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 voce di log per i job
Di seguito è riportato un elenco dei campi che puoi trovare nella voce di log di un job Cloud Run:
Campo | Valori e note |
LogEntry.labels.instanceId | L'istanza. |
LogEntry.labels.mylabel,
LogEntry.labels.mysecondlabel |
Le etichette impostate da te nel job. |
LogEntry.logName | Identifica il log, ad esempio log delle richieste, errore standard, output standard e così via. |
LogEntry.resource.labels.location | Identifica la posizione di Google Cloud del servizio. |
LogEntry.resource.labels.project_id | Il progetto in cui è stato 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 | Il numero di volte in cui è stata tentata questa attività. |
LogEntry.resource.type | cloud_run_job . Il tipo di risorsa Cloud Run.
|