Informazioni sul logging del controllo di integrità

Puoi ottenere i log dei controlli di integrità del bilanciamento del carico quando lo stato di integrità di un endpoint cambia. Puoi utilizzare i log controllo di integrità per:

  • Eseguire il debug e la risoluzione dei problemi in tempo reale dello stato di integrità dell'endpoint
  • Ottenere visibilità sullo stato di integrità dell'endpoint
  • Scopi di audit e conformità

I controlli di integrità registrano le informazioni sulla 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 che tu non abbia un'esclusione dei log che si applichi ai controlli di integrità. Per istruzioni su come verificare che GCE Instance Group e Network Endpoint Group i log siano consentiti, consulta Filtri di esclusione.

Abilitare e disabilitare il logging

Questa sezione descrive come abilitare il logging su un controllo di integrità nuovo o esistente e come disabilitare il logging su un controllo di integrità esistente.

Abilitare il logging su un nuovo controllo di integrità

Console

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

    Vai a Controlli di integrità

  2. Fai clic su Crea controllo di integrità.

  3. Per Log, seleziona Attivato.

  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 il controllo di integrità.

Terraform

Per creare un controllo di integrità per protocolli diversi con il logging, utilizza la 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 google_compute_region_health_check risorsa.

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

Abilitare il logging su un controllo di integrità esistente

Console

  1. Nella Google Cloud console, 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. Per Log, seleziona Attivato.

  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 il controllo di integrità.

Disabilitare il logging su un controllo di integrità esistente

Console

  1. Nella Google Cloud console, 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. Per Log, seleziona Disattivato.

  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à.

Visualizza i log

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

    I log dei controlli di integrità vengono indicizzati in base al gruppo di istanze o al gruppo di endpoint di rete.

  2. Per visualizzare tutti i log, nel menu Risorsa, seleziona 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 tuo progetto.

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

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

Utilizzare i filtri per visualizzare i log

Puoi anche ottenere i log in base a ricerche più specifiche. Ad esempio, il seguente filtro mostra tutti i log per un indirizzo IP dell'istanza di backend specificato:

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

I campi dei log di tipo booleano in genere vengono visualizzati solo se hanno un valore uguale a true. Se un campo booleano ha un valore uguale a false, viene omesso dal log.

UTF-8 UTF-8 è applicata in modo forzato per i campi di log. I caratteri non UTF-8 vengono sostituiti con punti interrogativi.

Informazioni registrate nei log

Le voci di log dei controlli di integrità contengono informazioni utili per monitorare ed eseguire il debug dello stato degli endpoint. Le voci di log contengono i seguenti tipi di informazioni:

  • Informazioni generali mostrate nella maggior parte dei log, come gravità, ID progetto, numero di progetto e timestamp.
  • Campi specifici per i controlli di integrità, descritti nelle tabelle seguenti.

Stati del controllo di integrità

Un endpoint è considerato HEALTHY o UNHEALTHY. Questi sono gli stati di base. All'interno di ciascuno di questi stati di base, sono presenti diversi stati più dettagliati.

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

La tabella seguente mostra il mapping tra gli stati di integrità di base e quelli dettagliati.

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

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

  1. Il server fornisce la risposta errata, quindi l'endpoint è considerato UNHEALTHY.
  2. Il server smette di rispondere e il nuovo stato è TIMEOUT.
  3. Il bilanciatore del carico considera ancora l'endpoint UNHEALTHY perché lo stato dettagliato TIMEOUT viene mappato allo stato di base UNHEALTHY.

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

Stato dettagliato del controllo di integrità Significato Stato di base
HEALTHY L'endpoint è raggiungibile ed è conforme ai requisiti definiti dal controllo di integrità. HEALTHY
UNHEALTHY L'endpoint è raggiungibile, ma non è conforme ai requisiti definiti dal controllo di integrità. UNHEALTHY
DRAINING L'endpoint è in fase di svuotamento. Le connessioni esistenti all'endpoint possono essere completate, ma le nuove vengono rifiutate. L'endpoint è considerato HEALTHY. HEALTHY
TIMEOUT L'endpoint non è raggiungibile. A seconda del tipo di controllo di integrità, non è possibile stabilire una connessione all'endpoint o il server non ha risposto entro il timeout specificato. L'endpoint è considerato UNHEALTHY. UNHEALTHY
UNKNOWN Il sistema di controllo di integrità è a conoscenza dell'endpoint, ma non ne conosce lo stato di integrità conosciuto. L'endpoint è considerato UNHEALTHY. UNHEALTHY

Ogni endpoint viene sottoposto a probe da più controlli di integrità; Google Cloud le voci di log vengono deduplicate prima del logging, in modo che vengano generati solo log univoci.

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

Se utilizzi lo svuotamento delle connessioni, i log controllo di integrità non vengono generati con lo stato di integrità dell'endpoint DRAINING. Questo perché i log dei controlli di integrità riflettono i risultati osservati dai probe dei controlli di integrità e svuotamento della connessione non influisce sui risultati osservati dal probe del controllo di integrità. Lo svuotamento delle connessioni funziona semplicemente informando il bilanciatore del carico che il nuovo stato è DRAINING e sostituisce efficacemente il vero stato di integrità dell'endpoint osservato dal controllo di integrità.

Puoi interagire con i log utilizzando l'API Cloud Logging. L'API fornisce mezzi per filtrare in modo interattivo i log in cui sono impostati campi specifici ed esportare 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à

Il 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'interfaccia di rete principale di ogni VM di backend. Si tratta di una stringa leggibile.
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 delle possibilità, consulta Stati del controllo di integrità.

Non supportato per i controlli di integrità 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 delle possibilità, consulta Stati del controllo di integrità.

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

probeRequest string

Per HTTP, HTTPS e HTTP/2, questo è il percorso della richiesta URL (requestPath campo nella configurazione della risorsa).

Per TCP/SSL, questa è la stringa facoltativa configurata che viene inviata dopo aver stabilito la connessione del controllo di integrità (request campo nella configurazione della risorsa).

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

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

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

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

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

probeResultText string Testo descrittivo relativo al risultato del probe. Potrebbe essere "Timeout della connessione" o "Risposta HTTP: Bad Gateway" oppure potrebbe essere vuoto.

Non supportato per i controlli di integrità 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à Envoy distribuiti, corrisponde all' indirizzo IP del proxy della subnet solo proxy.

probeSourceRegion string

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

Questo campo viene compilato solo per i probe delle policy di routing di Cloud DNS se il campo sourceRegions è impostato nel 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 bilanciatore del carico. Per i dettagli, consulta Destinazione dei pacchetti di probe nella panoramica dei controlli di integrità.
targetPort int La porta di destinazione del probe. Può essere la porta predefinita del probe o la porta specificata durante la creazione del controllo di integrità.

Esempi di filtri

Questa sezione fornisce esempi di filtri di log comuni.

Trovare tutti i risultati 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 controllo di integrità per un determinato 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"

Trovare tutte le transizioni 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"

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

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

Trovare i log di integrità da 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à dell'endpoint.
  • I controlli di integrità legacy non sono supportati.
  • I pool di destinazione non sono supportati.
  • I log non vengono generati quando lo stato di integrità dell'endpoint è UNKNOWN.
  • In caso di migrazioni di VM, potresti non visualizzare voci di log generate quando l'integrità dell'endpoint passa allo stato UNHEALTHY.
  • I log non vengono generati quando gli endpoint vengono eliminati. Ad esempio, quando arresti una VM.

Passaggi successivi