Informazioni sul logging del controllo di integrità

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

  • Debug in tempo reale e risoluzione dei problemi relativi allo stato di integrità dell'endpoint
  • Ottenere visibilità sullo stato di integrità dell'endpoint
  • A fini di audit e conformità

I controlli di integrità registrano le informazioni sulle transizioni di integrità in Logging. Puoi attivare o disattivare il logging in base al controllo di integrità.

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

Attivare e disattivare il logging

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

Attivare la registrazione in 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. Per 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 il logging, utilizza la risorsa google_compute_health_check.

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.

Attivare la registrazione 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. Per 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à.

Disattivare il logging in 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. Per 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 disattiva il logging per quel controllo di integrità.

Visualizza i log

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

    I log dei controlli dell'integrità sono indicizzati per gruppo di istanze o 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"

In genere, i campi dei log di tipo booleano vengono visualizzati solo se hanno un valore true. Se un campo booleano ha un valore false, il campo viene omesso dal log.

La codifica UTF-8 viene applicata ai campi di log. I caratteri non UTF-8 vengono sostituiti con punti di domanda.

Che cosa viene registrato nei log

Le voci di log del controllo di integrità contengono informazioni utili per monitorare ed eseguire il debug dello stato dei tuoi endpoint. Le voci dei 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, esistono diversi stati più dettagliati.

I NEG ibridi e i NEG internet regionali che utilizzano i controlli di integrità di Envoy distribuiti non supportano stati di integrità dettagliati.

La tabella seguente mostra la mappatura tra gli stati di salute di base e dettagliati.

Stato di salute di base Stato di salute dettagliato
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

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

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

La tabella seguente fornisce una definizione di ogni stato di salute.

Stato dettagliato del controllo di integrità Significato Stato di base
HEALTHY L'endpoint è raggiungibile e 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 sono consentite, ma quelle 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 la sua integrità non è nota. L'endpoint è considerato UNHEALTHY. UNHEALTHY

Esistono più controlli di integrità che eseguono sondaggi su ogni endpoint. Google Cloud rimuove le duplicazioni delle voci di log prima di registrarle in modo da generare solo log univoci.

Se un controllo dell'integrità si riavvia, a volte potresti notare che lo stato di integrità registrato cambia da UNKNOWN a uno degli stati noti elencati in precedenza, anche se lo stato di integrità dell'endpoint non è effettivamente cambiato. Google Cloud utilizza metodi di euristica di tipo best effort per eliminare queste voci di log.

Se utilizzi il ritiro della connessione, i log controllo di integrità non vengono generati con lo stato di integrità dell'endpointDRAINING. Questo perché i log del controllo di integrità riflettono i risultati osservati dalle sonde del controllo di integrità e svuotamento della connessione non influisce sui risultati osservati dalla sonda del controllo di integrità. Il ritiro delle connessioni funziona semplicemente informando il bilanciatore del carico che il nuovo stato è DRAINING e sostituisce efficacemente lo stato di integrità effettivo dell'endpoint, come osservato dal controllore di integrità.

Puoi interagire con i log utilizzando l'API Cloud Logging. L'API offre modi per filtrare in modo interattivo i log con campi specifici impostati ed esportare i log corrispondenti in Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Per ulteriori informazioni sull'API Cloud Logging, consulta la panoramica dell'API Cloud Logging.

Voce di log del controllo di integrità

Il campo jsonPayload LogEntry viene compilato con un campo healthCheckProbeResult contenente 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 di 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 corrente dell'endpoint. Per un elenco delle possibilità, consulta Stati del controllo di integrità.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG di internet regionali.

previousDetailedHealthState enum(DetailedHealthState) Lo stato di integrità dettagliato precedente dell'endpoint. Per un elenco delle possibilità, consulta Stati dei controlli di integrità.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG di internet regionali.

probeRequest string

Per HTTP, HTTPS e HTTP/2, si tratta del percorso della richiesta URL (campo requestPath nella configurazione della risorsa).

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

Non supportato per i controlli di integrità di Envoy distribuiti per i NEG ibridi e i NEG di internet regionali.

probeCompletionTimestamp google.protobuf.Timestamp Timestamp del completamento della sonda.
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à di Envoy distribuiti per NEG ibridi e NEG di internet regionali.

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

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG di internet regionali.

probeResultText string Testo descrittivo relativo al risultato della sonda. Potrebbe essere visualizzata una dicitura come "Connessione non riuscita" o "Risposta HTTP: Bad Gateway" oppure la pagina potrebbe essere vuota.

Non supportato per i controlli di integrità di Envoy distribuiti per NEG ibridi e NEG di internet regionali.

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

Per i controlli di integrità di Envoy distribuiti, corrisponde all'indirizzo IP del proxy della subnet solo proxy.

probeSourceRegion string

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

Questo campo viene compilato solo per i controlli dei criteri di routing Cloud DNS se il campo sourceRegions è impostato nel controllo di integrità corrispondente.

targetIp string L'indirizzo IP che è la destinazione della sonda. Può essere diverso da ipAddress. L'indirizzo IP di destinazione della sonda dipende dal tipo di bilanciatore del carico. Per maggiori dettagli, consulta Destinazione per i pacchetti di prova nella panoramica dei controlli di integrità.
targetPort int La porta che era il target del probe. Può essere la porta predefinita del probe o la porta specificata quando hai creato il controllo di integrità.

Filtri di esempio

Questa sezione fornisce esempi di filtri di log comuni.

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

Trova 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"

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

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

Trovare i log di integrità di 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 dell'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 delle VM, potresti non vedere voci di log generate quando lo stato di integrità dell'endpoint passa allo stato UNHEALTHY.
  • I log non vengono generati quando gli endpoint vengono eliminati. Ad esempio, quando interrompi una VM.

Passaggi successivi