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 del controllo di integrità per quanto segue:
- Debug in tempo reale e risoluzione dei problemi relativi allo stato di integrità dell'endpoint
- Ottenere visibilità sullo stato di integrità dell'endpoint
- Finalità di controllo 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 del 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.
Abilita e disabilita il logging
Questa sezione descrive come abilitare il logging per un controllo di integrità nuovo o esistente e come disabilitare il logging per un controllo di integrità esistente.
Abilita il logging su 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 con la configurazione del controllo di integrità.
gcloud
gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Il flag --enable-logging
consente il logging per il controllo di integrità in questione.
Terraform
Per creare un controllo di integrità per diversi protocolli con il logging, utilizza la risorsa google_compute_health_check
.
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
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
consente il logging per il controllo di integrità in questione.
Disabilita il logging 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 Off.
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 il controllo di integrità in questione.
Visualizza i log
Per visualizzare i log, vai a Esplora log.
I log del controllo di integrità sono indicizzati per gruppo di istanze o 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 progetto.logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
Puoi configurare l'esportazione di metriche basate su log per i controlli di integrità del bilanciatore del carico.
Utilizza 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 log di tipo boolean vengono generalmente visualizzati solo se hanno un valore di true
.
Se un campo booleano ha il valore false
, viene omesso dal log.
Per i campi di log viene applicata la codifica UTF-8. I caratteri non UTF-8 vengono sostituiti con punti interrogativi.
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 i seguenti tipi di informazioni:
- Informazioni generali mostrate nella maggior parte dei log, ad esempio 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 disponibili
diversi stati dettagliati.
I NEG ibridi e i NEG internet a livello di regione che utilizzano controlli di integrità Envoy distribuiti non supportano stati di integrità dettagliati.
La tabella seguente mostra la mappatura tra lo stato di integrità di base e quello dettagliato.
Stato di integrità di base | Stato di integrità dettagliato |
---|---|
HEALTHY |
HEALTHY DRAINING
|
UNHEALTHY |
UNKNOWN UNHEALTHY TIMEOUT
|
Le modifiche allo stato non sempre alterano il comportamento del bilanciatore del carico. Considera il seguente caso:
- Il server sta fornendo la risposta errata, quindi l'endpoint è considerato
UNHEALTHY
. - Il server smette di rispondere e il nuovo stato è
TIMEOUT
. - Il bilanciatore del carico considera comunque l'endpoint
UNHEALTHY
perché lo statoTIMEOUT
dettagliato è mappato allo statoUNHEALTHY
di base.
La tabella riportata di seguito 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
|
È in corso lo svuotamento dell'endpoint. Le connessioni esistenti all'endpoint possono essere completate, 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à è sconosciuta. L'endpoint è considerato UNHEALTHY .
|
UNHEALTHY
|
Esistono più controlli di integrità che esplorano ogni endpoint; Google Cloud deduplica le voci di log prima del logging, in modo che vengano generati solo log univoci.
Se un controllo di integrità si riavvia, a volte potresti 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
l'euristica secondo il criterio del "best effort" 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 di controllo di integrità e lo svuotamento della connessione non influisce sui risultati osservati dal probe di controllo di integrità. Lo svuotamento delle connessioni funziona semplicemente informando il bilanciatore del carico che il nuovo stato è DRAINING
, e sostituisce di fatto il vero stato di integrità dell'endpoint osservato dal controllo 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 valore LogEntry
jsonPayload
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. Questa è una stringa leggibile. |
healthCheckProtocol |
enum(HealthCheckProtocol) |
Il protocollo per il 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 supportata per i controlli di integrità Envoy distribuiti per NEG ibridi e NEG internet a livello di regione. |
previousDetailedHealthState |
enum(DetailedHealthState) |
Il precedente stato di integrità dettagliato dell'endpoint.
Per un elenco delle possibilità, consulta
Stati del controllo di integrità.
Non supportata 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 di richiesta dell'URL (campo Per TCP/SSL, è la stringa facoltativa configurata che viene inviata dopo aver stabilito la connessione per il controllo di integrità (campo Non supportata per i controlli di integrità 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 i protocolli di controllo di integrità orientati alla connessione TCP, SSL, HTTP, HTTPS e HTTP/2.
Non supportata 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 prober.
Non supportata 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 visualizzato un messaggio
come "Sessione di connessione scaduta" o "Risposta HTTP: gateway non valido" oppure
potrebbe essere vuoto.
Non supportata 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 di controllo di integrità.
Per i controlli di integrità Envoy distribuiti, corrisponde all'indirizzo IP proxy della subnet solo proxy. |
targetIp |
string |
L'indirizzo IP target del probe. Può essere diverso da ipAddress .
L'indirizzo IP di destinazione del probe dipende dal tipo di bilanciatore del carico. Per maggiori dettagli, consulta
Destinazione per i pacchetti probe nella panoramica dei controlli di integrità.
|
targetPort |
int |
La porta che era la destinazione del probe. Può essere la porta predefinita del probe o quella specificata al momento della creazione del 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 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 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 ora 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.
- 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 alcuna voce di log generata quando l'integrità dell'endpoint passa allo stato
UNHEALTHY
. - I log non vengono generati quando vengono eliminati gli endpoint. ad esempio quando arresti una VM.
Passaggi successivi
- Leggi le informazioni concettuali sui controlli di integrità.
- Crea un controllo di integrità.
- Scopri di più su Logging.