Logging e monitoraggio per i plug-in Application Load Balancer e Cloud CDN

Questa pagina mostra come configurare e utilizzare Cloud Logging e Cloud Monitoring con i plug-in Service Extensions per Cloud Load Balancing e Cloud CDN.

Logging

Questa sezione descrive la registrazione per i plug-in del bilanciatore del carico delle applicazioni. Il logging è possibile sia dal punto di vista del plug-in sia da quello del bilanciatore del carico.

Messaggi di log

Le estensioni di servizio supportano la generazione di messaggi di log durante l'esecuzione del plug-in. La registrazione dei log è disattivata per impostazione predefinita. Per registrare i log per un plug-in, attivala quando crei o aggiorni il plug-in.

I record di log dei plug-in sono annotati con le seguenti informazioni contestuali:

  • Annotazioni standard dei log, come timestamp e livello di log.
  • L'identità del plug-in che ha generato il messaggio.
  • Il callback del plug-in in cui è stato generato il messaggio di log.
  • Un identificatore di traccia requestId che aiuta a determinare il log delle richieste a cui è associato un messaggio di log.

I log pertinenti a Service Extensions rientrano in una delle categorie seguenti:

  • Messaggi di log del plug-in

    Generato da una chiamata di logging, ad esempio info!(...) per Rust, proxywasm.LogInfo(...) per Go o LOG_INFO per C++. Service Extensions esporta questi messaggi di log in Cloud Logging. Puoi registrare le intestazioni di richiesta e risposta e qualsiasi azione intrapresa dal plug-in.

    Puoi visualizzare questi messaggi utilizzando il servizio networkservices.googleapis.com.

  • Messaggi di log di Cloud Load Balancing

    Puoi visualizzare questi messaggi utilizzando il servizio loadbalancing.googleapis.com.

Registrazione dei log dal punto di vista del plug-in

Questa sezione descrive la registrazione di Service Extensions dal punto di vista del plug-in.

Abilitare il logging per un plug-in

Service Extensions supporta la generazione di messaggi di log durante l'esecuzione del plug-in. La registrazione dei log è disattivata per impostazione predefinita.

Per registrare i log di un plug-in, abilitalo quando crei il plug-in o lo aggiorni.

Per abilitare la registrazione per un plug-in esistente, utilizza il comando gcloud service-extensions wasm-plugins update:

gcloud service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

Sostituisci quanto segue:

  • WASM_PLUGIN: l'ID o il nome completo del plug-in
  • LOG_CONFIG: opzioni di logging per il plug-in. Per abilitare la registrazione, imposta l'opzione enable su true. Quindi, specifica i seguenti dettagli:

    • sample-rate: la frequenza di campionamento dei log attività come valore compreso tra 0 e 1. Il valore 0 indica che i messaggi di log non vengono archiviati. Il valore predefinito 1 indica che tutti i messaggi di log vengono archiviati. Un valore in virgola mobile compreso tra 0.0 e 1.0 indica che viene memorizzata una percentuale di messaggi di log.
    • min-log-level: il livello di gravità minimo dei messaggi di log del plug-in da esportare in Cloud Logging. Il valore predefinito è INFO.

Dopo aver attivato la registrazione per il plug-in, puoi visualizzare i messaggi emessi dalle istruzioni di logging nel codice del plug-in in Cloud Logging.

Per visualizzare i log, nella console Google Cloud , vai alla pagina Esplora log.

Visualizzare i messaggi di log per i plug-in

I log possono essere visualizzati creando query in Esplora log.

Puoi visualizzare i log dei plug-in come log di Service Extensions autonomi. In questa visualizzazione, ogni messaggio di log del plug-in viene registrato nel proprio record di log e non è associato automaticamente alle informazioni del log delle richieste.

Questi messaggi di log si trovano nel log networkservices.googleapis.com/wasm_plugin_activity con il tipo di risorsa networkservices.googleapis.com/WasmPluginVersion.

Il sistema potrebbe anche aggiungere messaggi di log informativi a questo log. Ad esempio, se si verifica un errore del plug-in quando un'invocazione del plug-in supera i limiti di CPU o memoria, viene registrato un messaggio con gravità ERROR. Questi messaggi possono essere visualizzati anche in Visualizzare e filtrare gli errori.

Esempi di log dei plug-in

Prendi in considerazione una voce di log di esempio di Service Extensions. Il valore di message viene passato alla chiamata LOG_INFO del plug-in. Il valore severity dipende dal livello di log utilizzato nella chiamata di log del plug-in. Nella sezione labels, il valore dell'API è HTTP_REQUEST_HEADER, il che indica che l'operazione registrata è il callback del plug-in on_http_request_headers.

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkservices.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkservices.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}

Limitazioni per la registrazione

I plug-in sono limitati alla registrazione di un massimo di 16 KiB di dati di payload per richiesta HTTP client. Questo importo viene suddiviso in più chiamate di logging associate a una determinata richiesta HTTP. Il limite si applica solo al testo del messaggio di log, non ai metadati aggiuntivi aggiunti al record di log da Service Extensions.

Ad esempio, se un callback on_http_request_headers effettua due chiamate di logging con messaggi di 4 KiB ciascuno, e poi un callback on_http_response_headers tenta di effettuare tre chiamate di logging con messaggi di 4 KiB ciascuno per la stessa richiesta HTTP, il terzo messaggio di logging viene eliminato. Viene aggiunto un messaggio di log per registrare il numero di messaggi di log generati dal plug-in che sono stati eliminati.

Logging dal punto di vista del bilanciatore del carico

Questa sezione descrive la registrazione di Service Extensions dal punto di vista del bilanciatore del carico.

Abilita il logging su un servizio di backend

Puoi abilitare la registrazione per i plug-in del bilanciatore del carico delle applicazioni durante la creazione di un servizio abilitando la registrazione sul servizio di backend che è la destinazione di una richiesta.

Per abilitare la registrazione per il servizio di backend di destinazione, utilizza il comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --enable-logging \
    --logging-sample-rate=RATE \
    --region=REGION \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

Sostituisci quanto segue:

  • BACKEND_SERVICE: il nome del servizio di backend
  • RATE: un valore compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Il valore predefinito è 1.0. Questa impostazione è efficace solo se utilizzata con il parametro enable-logging. Se ometti enable-logging, il logging è disattivato.
  • REGION: la regione del backend
  • LOGGING_OPTIONAL_MODE: attiva la registrazione per i campi facoltativi in una di queste modalità:

    • INCLUDE_ALL_OPTIONAL include tutti i campi facoltativi.
    • EXCLUDE_ALL_OPTIONAL (valore predefinito) esclude tutti i campi facoltativi.
    • CUSTOM include un elenco personalizzato di campi facoltativi.
  • OPTIONAL_FIELDS: un elenco separato da virgole di campi facoltativi quando selezioni la modalità CUSTOM

Dopo aver attivato la registrazione nel servizio di backend, le richieste HTTP o HTTPS vengono registrate utilizzando i log di Cloud Logging.

Per visualizzare i log, nella console Google Cloud , vai alla pagina Esplora log.

Messaggi di log per un servizio di backend

In generale, le voci di log del bilanciatore del carico delle applicazioni contengono informazioni utili per monitorare ed eseguire il debug del traffico HTTP o HTTPS. Le voci di log contengono i seguenti tipi di informazioni:

  • Informazioni mostrate nella maggior parte dei log Google Cloud , come gravità, ID progetto, numero di progetto e timestamp, come descritto nel log LogEntry.
  • Campi log HttpRequest.

I log delle richieste per i bilanciatori del carico HTTP e HTTPS contengono un oggetto service_extension_info nel payload JSON della voce di log del bilanciatore del carico con le seguenti informazioni:

Campo Tipo Descrizione
backend_target_name string Il nome del target di backend dell'estensione.
backend_target_type string Tipo di target di backend.
chain string Nome della catena di estensioni all'interno della risorsa di estensione di servizio che corrisponde alla richiesta.