Informazioni di logging del controllo di integrità

Puoi ottenere i log del bilanciamento del carico controlli di integrità quando un endpoint cambiamenti dello stato di integrità. Puoi utilizzare i log controllo di integrità per quanto segue:

  • Debug in tempo reale e risoluzione dei problemi relativi allo stato di integrità degli endpoint
  • Ottenere visibilità sullo stato di integrità del tuo endpoint
  • Finalità di audit e conformità

I controlli di integrità registrano le informazioni di transizione di integrità in Logging. Puoi abilitare o disabilitare il logging in base al controllo di integrità.

Per visualizzare i log controllo di integrità in Logging, devi assicurarti di non c'è un'esclusione dei log applicabile ai controlli di integrità. Per istruzioni su come verificare che GCE Instance Group e Sono consentiti Network Endpoint Group log; consulta Filtri di esclusione.

Abilita e disabilita il logging

Questa sezione descrive come attivare il logging su una piattaforma nuova o esistente controllo di integrità e come disabilitare il logging in un controllo di integrità esistente.

Abilita il logging per un nuovo controllo di integrità

Console

  1. Nella console Google Cloud, vai alla pagina Controlli di integrità.

    Vai a Controlli di integrità

  2. Fai clic su Crea controllo di integrità.

  3. In Log, seleziona On.

  4. Continua a configurare il controllo di integrità.

gcloud

gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

Il flag --enable-logging abilita il logging per quel controllo di integrità.

Terraform

Per creare un controllo di integrità per diversi protocolli con logging, utilizza il metodo google_compute_health_check risorsa.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

Per un bilanciatore del carico a livello di regione, utilizza la risorsa google_compute_region_health_check.

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.

Abilita il logging su un controllo di integrità esistente

Console

  1. Nella console Google Cloud, vai alla pagina Controlli di integrità.

    Vai a Controlli di integrità

  2. Fai clic sul nome del controllo di integrità.

  3. Fai clic su Modifica.

  4. In Log, seleziona On.

  5. Fai clic su Salva.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

Il flag --enable-logging abilita il logging per quel controllo di integrità.

Disabilita il logging su un controllo di integrità esistente

Console

  1. Nella console Google Cloud, vai alla pagina Controlli di integrità.

    Vai a Controlli di integrità

  2. Fai clic sul nome del controllo di integrità.

  3. Fai clic su Modifica.

  4. In Log, seleziona Off.

  5. Fai clic su Salva.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --no-enable-logging

Il flag --no-enable-logging disabilita il logging per il controllo di integrità in questione.

Visualizza i log

  1. Per visualizzare i log, vai a Esplora log.

    I log del controllo di integrità sono indicizzati per gruppo di istanze o un gruppo di endpoint di rete.

  2. Per visualizzare tutti i log, nel menu Risorsa, seleziona una delle seguenti opzioni: GCE Instance Group o Network Endpoint Group, a seconda del tipo di backend.

  3. In alternativa, incolla quanto segue nel campo Query. Sostituisci PROJECT_ID con l'ID del progetto.

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
    

Puoi configurare l'esportazione metriche basate su log per il bilanciatore del carico e controlli di integrità.

Utilizza i filtri per visualizzare i log

Puoi anche visualizzare log basati su ricerche più specifiche. Ad esempio, Il seguente filtro mostra tutti i log per l'indirizzo IP di un'istanza di backend specificata:

  logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"

I campi del log di tipo boolean vengono generalmente visualizzati solo se hanno il valore true. Se un campo booleano ha il valore false, questo campo viene omesso dal log.

Codifica UTF-8 per i campi dei log. Caratteri non UTF-8 vengono sostituiti da punti interrogativi.

Che cosa viene registrato

Le voci di log del controllo di integrità contengono informazioni utili per il monitoraggio e il debug dello stato degli endpoint. Le voci di log contengono quanto segue: tipi di informazioni:

  • Informazioni generali mostrate nella maggior parte dei log, come gravità, ID progetto, il numero del progetto e il timestamp.
  • Campi specifici dei controlli di integrità, descritti nelle tabelle riportate di seguito.

Stati del controllo di integrità

Un endpoint viene considerato HEALTHY o UNHEALTHY. Queste sono le fasi di base stati. All'interno di ciascuno di questi stati di base, sono disponibili vari stati.

NEG ibridi e NEG internet a livello di regione che utilizzano Envoy distribuito i controlli di integrità non supportano stati di integrità dettagliati.

La tabella seguente mostra la mappatura tra stato di integrità di base e stato dettagliato.

Stato di integrità di base Stato di integrità dettagliato
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

Le modifiche dello stato non sempre alterano il comportamento del bilanciatore del carico. Considera le questo caso:

  1. Il server sta dando la risposta sbagliata, quindi l'endpoint viene considerato UNHEALTHY.
  2. Il server smette di rispondere e il nuovo stato è TIMEOUT.
  3. Il bilanciatore del carico considera comunque l'endpoint UNHEALTHY perché lo stato dettagliato di TIMEOUT è mappato UNHEALTHY.

La tabella seguente fornisce una definizione di ogni stato di integrità.

Stato dettagliato del controllo di integrità Significato Stato base
HEALTHY L'endpoint è raggiungibile ed è conforme ai requisiti definita dal controllo di integrità. HEALTHY
UNHEALTHY L'endpoint è raggiungibile ma non è conforme ai requisiti definita dal controllo di integrità. UNHEALTHY
DRAINING È in corso lo svuotamento dell'endpoint. Le connessioni esistenti all'endpoint possono essere completati, ma quelli nuovi vengono rifiutati. Endpoint è considerato HEALTHY. HEALTHY
TIMEOUT L'endpoint non è raggiungibile. A seconda del tipo di controllo di integrità, impossibile stabilire una connessione all'endpoint o il server non devono rispondere entro il timeout specificato. L'endpoint è considerato UNHEALTHY. UNHEALTHY
UNKNOWN Il sistema di controllo di integrità è a conoscenza dell'endpoint, ma il suo integrità non è noti. L'endpoint è considerato UNHEALTHY. UNHEALTHY

Ci sono più controlli di integrità che esplorano ogni endpoint; Google Cloud deduplica le voci di log prima del logging, in modo che vengano generati.

Se un controllo di integrità viene riavviato, a volte potresti vedere lo stato di integrità registrato cambia da UNKNOWN a uno degli stati noti elencati in precedenza anche se di integrità dell'endpoint non è cambiato. Google Cloud utilizza euristica del "best effort" per eliminare queste voci di log.

Se utilizzi svuotamento della connessione, i log del controllo di integrità non vengono generati con lo stato di integrità dell'endpoint DRAINING. Questo perché i log controllo di integrità riflettono i risultati osservati i probe del controllo di integrità e lo svuotamento della connessione non influisce sui risultati osservati dal probe di controllo di integrità. Lo svuotamento della connessione funziona semplicemente informando al bilanciatore del carico che il nuovo stato è DRAINING, che sostituisce in modo efficace il reale stato di integrità dell'endpoint osservato dal controllo di integrità.

Puoi interagire con i log utilizzando l'API Cloud Logging. L'API consente di filtrare in modo interattivo i log che hanno campi specifici impostati esporta i log corrispondenti in Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Per saperne di più sull'API Cloud Logging, consulta la panoramica dell'API Cloud Logging.

Voce di log del controllo di integrità

La LogEntry jsonPayload viene compilato con un campo healthCheckProbeResult che contiene le seguenti informazioni.

Campo Tipo Descrizione
ipAddress string L'indirizzo IP interno principale associato all'indirizzo IP principale di rete di ogni VM di backend. Questo è un file leggibile stringa.
healthCheckProtocol enum(HealthCheckProtocol) Il protocollo del controllo di integrità utilizzato per il controllo di integrità dell'endpoint. Esempi: TCP, HTTP, HTTPS.
healthState enum(HealthState) Stato di integrità attuale dell'endpoint: HEALTHY o UNHEALTHY.
previousHealthState enum(HealthState) Lo stato di integrità precedente dell'endpoint: HEALTHY o UNHEALTHY.
detailedHealthState enum(DetailedHealthState) Stato di integrità dettagliato attuale dell'endpoint. Per un elenco di possibilità, vedi Stati del controllo di integrità.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

previousDetailedHealthState enum(DetailedHealthState) Lo stato di integrità dettagliato precedente dell'endpoint. Per un elenco di possibilità, vedi Stati del controllo di integrità.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

probeRequest string

Per HTTP, HTTPS e HTTP/2, questo è il percorso di richiesta dell'URL (campo requestPath nella configurazione delle risorse).

Per TCP/SSL, si tratta della stringa facoltativa configurata inviate dopo che è stata stabilita la connessione per il controllo di integrità (campo request nella configurazione delle risorse).

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

probeCompletionTimestamp google.protobuf.Timestamp Timestamp del completamento del probe.
connectLatency google.protobuf.Duration Tempo dedicato alla configurazione della connessione per orientati alla connessione i protocolli per il controllo di integrità TCP, SSL, HTTP, HTTPS e HTTP/2.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

responseLatency google.protobuf.Duration Latenza tra richiesta e risposta, misurata dal prober.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

probeResultText string Testo descrittivo relativo al risultato del probe. Potrebbe dire qualcosa come "Sessione di connessione scaduta" "Risposta HTTP: gateway non valido" oppure potrebbe essere vuoto.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG internet a livello di regione.

probeSourceIp string L'indirizzo IP da cui è stato inviato il probe del controllo di integrità.

Per i controlli di integrità di Envoy distribuiti, ciò corrisponde l'indirizzo IP del proxy dalla subnet solo proxy.

probeSourceRegion string

La regione del punto di vista del cloud da cui viene eseguito il controllo di integrità ha avuto origine.

Questo campo viene compilato solo per i probe di Cloud DNS criteri di routing, se il campo sourceRegions è configurato del controllo di integrità corrispondente.

targetIp string L'indirizzo IP di destinazione del probe. Può essere diverso da ipAddress. L'indirizzo IP di destinazione del probe dipende dal tipo di carico con il bilanciatore del carico di rete passthrough esterno regionale. Per maggiori dettagli, vedi Destinazione per i pacchetti di probe nella panoramica dei controlli di integrità.
targetPort int La porta che è stata target del probe. Può essere l'impostazione predefinita la porta del probe o la porta specificata al momento della creazione il controllo di integrità.

Filtri di esempio

Questa sezione fornisce esempi di filtri di log comuni.

Trova tutti i risultati del controllo di integrità per un determinato gruppo di istanze

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_instance_group" AND
resource.labels.instance_group_name="INSTANCE_GROUP_NAME"

Trovare tutti i risultati del controllo di integrità per un particolare NEG

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_network_endpoint_group" AND
resource.labels.network_endpoint_group_id="ENDPOINT_GROUP_ID"

Trova tutte le transizioni del controllo di integrità per l'indirizzo IP dell'istanza di backend 10.128.15.201

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"

Trova tutti gli endpoint che in precedenza erano in stato HEALTHY ma che ora sono TIMEOUT

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.previousDetailedHealthState="HEALTHY"
jsonPayload.healthCheckProbeResult.detailedHealthState="TIMEOUT"

Trova i log di integrità relativi a un intervallo di tempo specifico

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
timestamp>"2019-02-14T02:20:00.0Z"
timestamp<"2019-02-14T03:30:00.0Z"

Limitazioni

  • I log vengono generati solo per la transizione di integrità degli endpoint.
  • Controlli di integrità legacy non sono supportati.
  • I pool di destinazione non sono supportati.
  • I log non vengono generati se lo stato di integrità dell'endpoint è UNKNOWN.
  • In caso di migrazioni di VM, potresti non vedere voci di log generate durante le transizioni di integrità dell'endpoint allo stato UNHEALTHY.
  • I log non vengono generati quando vengono eliminati gli endpoint. Ad esempio, quando per arrestare una VM.

Passaggi successivi