Questa pagina descrive i log disponibili quando utilizzi Knative serving e come visualizzare e scrivere i log.
Knative serving ha due tipi di log:
- Log delle richieste: log delle richieste inviate ai servizi Knative serving. Questi log vengono creati automaticamente.
- Log dei container: log emessi dalle istanze container, in genere dal tuo codice, scritti in posizioni supportate come descritto in Scrivere log dei container.
Attivare i log
I log Google Cloud vengono inviati automaticamente a Cloud Logging. Per Google Distributed Cloud, devi prima abilitare i log.
Visualizzazione dei log
Puoi visualizzare i log del tuo servizio in due modi:
- Utilizza la pagina Knative Serving nella console Google Cloud
- Utilizza Esplora log di Cloud Logging nella console Google Cloud .
Entrambi i metodi di visualizzazione esaminano gli stessi log archiviati in Cloud Logging, ma Esplora log di Cloud Logging fornisce più dettagli e più funzionalità di filtraggio.
Visualizzare i log in Knative serving
Per visualizzare i log nella pagina Knative serving:
Fai clic sul servizio che ti interessa 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.
Visualizzazione dei log in Cloud Logging
Per visualizzare i log di Knative Serving in Esplora log di Cloud Logging:
Vai alla pagina Esplora log nella consoleGoogle Cloud .
Seleziona un progetto Google Cloud esistente nella parte superiore della pagina o creane uno nuovo.
Utilizza i menu a discesa per selezionare la risorsa: Container Kubernetes.
Per ulteriori informazioni, vedi Utilizzo di Esplora log.
Visualizzazione dei log in Cloud Code
Per visualizzare i log in Cloud Code, leggi le guide per IntelliJ e Visual Studio Code.
Lettura programmatica dei log
Se vuoi leggere i log in modo programmatico, puoi utilizzare uno dei seguenti metodi:
- Utilizza un sink 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.
Scrittura dei log dei container
Quando scrivi i log dal tuo servizio, questi vengono rilevati automaticamente da Cloud Logging, a condizione che vengano scritti in una di queste posizioni:
- Flussi di output standard (
stdout
) o di errore standard (stderr
) - 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 dei container scritti in queste posizioni supportate vengono associati automaticamente al servizio, alla revisione e alla posizione di Knative serving.
Utilizzo di 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, chiamato 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 registrata una struct Entry, 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 abilitando Logstash JSON Encoder nella configurazione di logback.xml
.
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 dei campi speciali.
Ad esempio, se il tuo JSON include una proprietà severity
, questa viene rimossa da
jsonPayload
e viene visualizzata come severity
della voce di log.
Se presente, la proprietà message
viene utilizzata come testo di visualizzazione principale della voce di log.
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
In Esplora log, i log correlati dallo stesso trace
sono
visualizzabili in formato "padre-figlio": quando fai clic sull'icona
a forma di triangolo a sinistra della voce di log della richiesta, i log del container correlati a quella
richiesta vengono visualizzati nidificati sotto il log della richiesta.
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 contiene 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 del log delle richieste
I log delle richieste vengono creati automaticamente. Sebbene non sia possibile controllare la quantità di log delle richieste direttamente da Knative Serving, 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 , ad esempio Compute Engine, potresti aver utilizzato gli agenti di logging di Cloud Logging. Knative serving non utilizza agenti di logging perché supporta la raccolta di log integrata.
Risorsa di logging
Se fai clic su una voce di log in Esplora log, si apre una voce di log in formato 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.
Tuttavia, esistono alcune etichette o etichette delle risorse speciali per Knative serving. Questi sono elencati qui con contenuti di esempio:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
}
logName: "projects/my-project/logs/kubernetes-engine/enterprise/knative-serving/.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"
}
Campo | Valori e note |
---|---|
instanceId |
L'istanza di container che ha gestito la richiesta. |
logName |
Identifica il log, ad esempio log delle richieste, errore standard, output standard e così via. |
configuration_name |
La risorsa di configurazione che ha creato la revisione che ha gestito la richiesta. |
location |
Identifica la posizione GCP del servizio. |
project_id |
Il progetto in cui viene eseguito il deployment del servizio. |
revision_name |
La revisione che ha gestito la richiesta. |
service_name |
Il servizio che ha gestito la richiesta. |
type |
cloud_run_revision . Il tipo di risorsa Knative serving. |