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:
- Debug in tempo reale e risoluzione dei problemi relativi allo 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 attivare o disattivare la registrazione in base al controllo di integrità.
Per visualizzare i log controllo di integrità in Logging, devi assicurarti di non avere un'esclusione dei log che si applichi 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.
Abilitare e disabilitare la registrazione
Questa sezione descrive come attivare la registrazione in un controllo di integrità nuovo o esistente e come disattivarla in un controllo di integrità esistente.
Abilitare la registrazione in un nuovo controllo di integrità
Console
Nella console Google Cloud , vai alla pagina Controlli di integrità.
Fai clic su Crea controllo di integrità.
Per Log, seleziona On.
Continua a configurare il controllo di integrità.
gcloud
gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Il flag --enable-logging
abilita la registrazione per il controllo di integrità.
Terraform
Per creare un controllo di integrità per protocolli diversi con la registrazione, utilizza la
risorsa google_compute_health_check
.
Per un bilanciatore del carico regionale, utilizza la risorsa google_compute_region_health_check
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Abilitare la registrazione su un controllo di integrità esistente
Console
Nella console Google Cloud , vai alla pagina Controlli di integrità.
Fai clic sul nome del controllo di integrità.
Fai clic su
Modifica.Per Log, seleziona On.
Fai clic su Salva.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Il flag --enable-logging
abilita la registrazione per il controllo di integrità.
Disattivare la registrazione per un controllo di integrità esistente
Console
Nella console Google Cloud , vai alla pagina Controlli di integrità.
Fai clic sul nome del controllo di integrità.
Fai clic su
Modifica.In Log, seleziona Off.
Fai clic su Salva.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --no-enable-logging
Il flag --no-enable-logging
disabilita la registrazione per il controllo di integrità.
Visualizza i log
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.
Per visualizzare tutti i log, nel menu Risorsa, seleziona
GCE Instance Group
oNetwork Endpoint Group
, a seconda del tipo di backend.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 log basati su ricerche più specifiche. Ad esempio, il seguente filtro mostra tutti i log per un indirizzo IP di 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 true
.
Se un campo booleano ha un valore false
, viene omesso dal log.
La codifica UTF-8 è applicata in modo forzato per i campi di log. I caratteri non UTF-8 vengono sostituiti con punti interrogativi.
Che cosa viene registrato
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, esistono diversi stati più dettagliati.
I NEG ibridi e i NEG internet regionali che utilizzano controlli di integrità Envoy distribuiti non supportano stati di integrità dettagliati.
La tabella seguente mostra la mappatura tra gli stati di integrità di base e quelli dettagliati.
Stato di integrità 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. Considera il seguente caso:
- Il server sta fornendo la risposta sbagliata, quindi l'endpoint è considerato
UNHEALTHY
. - Il server smette di rispondere e il nuovo stato è
TIMEOUT
. - Il bilanciatore del carico considera ancora l'endpoint come
UNHEALTHY
perché lo stato dettagliatoTIMEOUT
corrisponde allo statoUNHEALTHY
di base.
La tabella seguente fornisce una definizione di ciascuno 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 il suo stato di integrità non è noto. L'endpoint è considerato UNHEALTHY .
|
UNHEALTHY
|
Esistono più controlli di integrità che analizzano ogni endpoint; Google Cloud dei duplicati delle voci di log prima della registrazione, in modo che vengano generati solo log unici.
Se un controllo di integrità viene riavviato, potresti occasionalmente notare che lo stato di integrità registrato
passa da UNKNOWN
a uno degli stati noti elencati in precedenza, anche se lo stato di integrità
dell'endpoint non è effettivamente cambiato. Google Cloud utilizza
euristiche di massimo impegno per eliminare queste voci di log.
Se utilizzi lo svuotamento della connessione, i log del controllo di integrità non vengono generati con lo stato di integrità dell'endpoint DRAINING
. Questo perché i log del controllo di integrità riflettono i risultati osservati dai probe del controllo di integrità e lo svuotamento della connessione non influisce sui risultati osservati dal probe del controllo di integrità. Il svuotamento della connessione funziona semplicemente comunicando
al bilanciatore del carico che il nuovo stato è DRAINING
e sostituisce effettivamente
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 modi per filtrare in modo interattivo i log che hanno 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à
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 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 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 regionali. |
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 regionali. |
probeRequest |
string |
Per HTTP, HTTPS e HTTP/2, questo è il percorso della richiesta URL
(campo Per TCP/SSL, questa è la stringa facoltativa configurata che viene
inviata dopo aver stabilito la connessione per il controllo di integrità
(campo Non supportato per i controlli di integrità Envoy distribuiti per NEG ibridi e NEG internet regionali. |
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 regionali. |
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 regionali. |
probeResultText |
string |
Testo descrittivo relativo al risultato del probe. Potrebbe essere visualizzato un messaggio
come "Sessione di connessione scaduta" o "Risposta HTTP: Bad Gateway" oppure
potrebbe essere vuoto.
Non supportato per i controlli di integrità Envoy distribuiti per NEG ibridi e NEG internet regionali. |
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 osservazione cloud da cui ha avuto origine il controllo di integrità. Questo campo viene compilato solo per i probe dei criteri di routing di Cloud DNS se il campo |
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 maggiori dettagli, vedi
Destinazione per i pacchetti di probe 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 che hai specificato quando hai creato 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 gruppo di istanze specifico
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 NEG specifico
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 di 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 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 della salute in 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 dello stato di integrità dell'endpoint.
- I controlli di integrità legacy non sono supportati.
- I pool target 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 lo stato di 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
- Leggi le informazioni concettuali sui controlli di integrità.
- Crea un controllo di integrità.
- Leggi informazioni su Logging.