Questa pagina descrive i log disponibili quando utilizzi Cloud Run e come visualizzarli e scriverli.
Cloud Run ha diversi 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 (tutte le risorse): log emessi dalle istanze, in genere dal tuo codice, scritti nelle posizioni supportate come descritto in Scrittura dei log dei container.
- Log di sistema (tutte le risorse): log generati dalla piattaforma contenenti informazioni
sui tuoi workload. Questi log vengono scritti in
varlog/system.
Visualizza i log
Puoi visualizzare i log per la risorsa Cloud Run in diversi modi:
- Utilizzare la pagina Cloud Run nella console Cloud de Confiance
- Utilizzare Cloud Logging
- Utilizza Google Cloud CLI per visualizzare i log utilizzando gcloud (solo servizi)
Entrambi i metodi di visualizzazione dei log nella console esaminano gli stessi log archiviati in Cloud Logging, ma Esplora log di Cloud Logging fornisce maggiori dettagli e più funzionalità di filtro.
Visualizza i log in Cloud Run
Puoi visualizzare i log nella pagina Cloud Run per le seguenti risorse:
Servizi
Nella console Cloud de Confiance by S3NS , vai alla pagina Servizi di Cloud Run:
Fai clic sul servizio nell'elenco visualizzato.
Fai clic sulla scheda Log per visualizzare i log delle richieste e dei container per tutte le revisioni di questo servizio. Puoi filtrare in base al livello di gravità del log.
Job
Per visualizzare i log dei job nella pagina Cloud Run:
Nella console Cloud de Confiance by S3NS , vai alla pagina Job di Cloud Run:
Individua il job nell'elenco e fai clic.
Fai clic sulla scheda Log per visualizzare i log dei container 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 una specifica esecuzione del job, fai clic sull'esecuzione del job e poi sulla scheda Log.
Formato e contenuti dei log di scalabilità dell'istanza
Quando vengono avviate nuove istanze per il servizio Cloud Run, Cloud Logging
include voci di log con il nome log varlog/system che spiegano perché è stata creata ogni
istanza. La voce di log segue questo formato:
Starting new instance. Reason: REASON - DESCRIPTION
La tabella seguente fornisce una suddivisione delle descrizioni delle istanze:
| Motivo | Descrizione |
|---|---|
MANUAL_OR_CUSTOMER_MIN_INSTANCE |
Istanza avviata a causa del numero minimo di istanze o della scalabilità manuale configurati dal cliente. |
AUTOSCALING |
L'istanza è stata avviata a causa dei fattori di scalabilità configurati (ad esempio utilizzo della CPU, throughput delle richieste e così via) o della capacità esistente insufficiente per il traffico attuale. |
DEPLOYMENT_ROLLOUT |
Istanza avviata a causa dello spostamento del traffico tra le revisioni dovuto al deployment, alla regolazione della suddivisione del traffico o al controllo di integrità del deployment. |
Scrivere log dei container
Quando scrivi i log dal tuo servizio, job o pool di worker, questi vengono rilevati automaticamente da Cloud Logging, a condizione che vengano scritti in una delle seguenti posizioni:
- Flussi di output standard (
stdout) o di errore standard (stderr) - Qualsiasi file nella directory
/var/log - syslog (
/dev/log) - Log scritti utilizzando le librerie client di Cloud Logging, disponibili per molti linguaggi popolari
La maggior parte degli sviluppatori deve scrivere i log utilizzando l'output standard e l'errore standard.
I log dei container scritti in queste posizioni supportate vengono associati automaticamente al servizio, alla revisione e alla posizione di Cloud Run, al pool di worker, alla revisione e alla posizione di Cloud Run o al job Cloud Run. Le eccezioni contenute in questi log vengono acquisite e segnalate 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 di voci di log utilizzando la registrazione integrata non
consuma la quota per il numero di richieste entries.write al minuto dell'API Cloud Loggingng.
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 container sidecar separato.
Utilizza testo semplice anziché 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 analizzato da Cloud Logging e inserito in jsonPayload. Al contrario, il semplice messaggio di testo viene inserito in textPayload.
Scrittura di log strutturati
Il seguente snippet mostra come scrivere voci di log strutturate. Mostra anche 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 uno struct di voci, viene chiamato il metodo String per eseguirne il marshalling nel formato JSON previsto da Cloud Logging:
Java
Abilita la registrazione JSON con Logback e
SLF4J configurando
Logging Logback appender
nella configurazione di logback.xml:
Configura LoggingAppender per reindirizzare i log all'output standard (stdout)
in formato JSON strutturato per l'acquisizione da parte di Cloud Run. Per ulteriori
dettagli, consulta la sezione Configurazione di Logback.
In questo modo viene prodotta la seguente struttura del log di output:
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 della LogEntry generata, come descritto nella documentazione relativa ai campi speciali.
Ad esempio, se il file JSON include una proprietà severity, questa viene rimossa da 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, leggi la sezione Risorsa di logging di seguito.
Correlare i log dei container con un log di richiesta (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 delle richieste, i log dei container correlati a quella
richiesta vengono visualizzati nidificati sotto il log delle richieste.
I log dei container non vengono correlati automaticamente ai log delle richieste, a meno che tu non utilizzi una
libreria client di Cloud Logging.
Per correlare i log dei container con i log delle richieste senza utilizzare una libreria client, puoi utilizzare una riga di log JSON strutturata che contenga un campo logging.googleapis.com/trace con l'identificatore di traccia estratto dall'intestazione X-Cloud-Trace-Context, come mostrato nell'esempio precedente per la registrazione strutturata.
Controllare l'utilizzo delle risorse di log delle richieste (solo servizi)
I log delle richieste vengono creati automaticamente. Sebbene non sia possibile 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 Cloud de Confiance by S3NS , ad esempio Compute Engine, potresti aver utilizzato gli agenti di logging di Cloud Logging. Cloud Run non utilizza agenti di logging perché supporta 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). - Cloud Run Job (
cloud_run_job).
Risorse di logging
Se fai clic su una voce di log in Esplora log, si apre una voce di log formattata in JSON, in modo da poter esaminare in dettaglio le informazioni che ti interessano.
Tutti i campi di una voce di log, come timestamp, gravità e httpRequest
sono standard e sono descritti nella documentazione di una
voce di log.
Cloud Run aggiunge metadati aggiuntivi, in modo da poter identificare l'origine di un log. Ciò include le (etichette impostate sul servizio Cloud Run) e le etichette delle risorse specifiche di Cloud Run.
Campi delle voci di log per un servizio
Di seguito è riportato un elenco dei campi che possono essere trovati nella voce di log per un servizio Cloud Run:
| Campo | Valori e note |
|---|---|
LogEntry.labels.instanceId |
Questo ID corrisponde a una particolare istanza in questo servizio man mano che viene scalato verso l'alto e verso il basso. |
LogEntry.labels.run.googleapis.com/base_image_versions |
La versione dell'immagine di base utilizzata dal servizio. Viene visualizzato solo per i servizi di cui è stato eseguito il deployment dall'origine e se sono attivati gli aggiornamenti automatici della sicurezza. |
LogEntry.labels.run.googleapis.com/cloud_event_id |
L'ID CloudEvent. Viene visualizzato solo per i servizi che ricevono eventi da Eventarc. |
LogEntry.labels.run.googleapis.com/cloud_event_source |
L'origine CloudEvent. Viene visualizzato solo per i servizi che ricevono eventi da Eventarc. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
Le etichette impostate dall'utente 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 Cloud de Confiance by S3NS posizione 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 gestito la richiesta. |
LogEntry.resource.labels.service_name |
Il servizio che ha gestito 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: "europe-west1"
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 delle voci di log per i job
Di seguito è riportato un elenco dei campi che si trovano nella voce di log di un job Cloud Run:
| Campo | Valori e note |
|---|---|
LogEntry.labels.instanceId |
Questo ID corrisponde a una particolare istanza utilizzata per l'esecuzione di un determinato job o attività. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
Le etichette impostate da te nel job. |
LogEntry.logName |
Identifica il log, ad esempio errore standard, output standard e così via. |
LogEntry.resource.labels.location |
Identifica la Cloud de Confiance by S3NS sede di lavoro. |
LogEntry.resource.labels.project_id |
Il progetto in cui viene eseguito il deployment del job. |
LogEntry.resource.labels.job_name |
Il nome del lavoro. |
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 tentativi per questa attività. |
LogEntry.resource.type |
cloud_run_job. Il tipo di risorsa Cloud Run. |