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 quanto segue:
- Debug in tempo reale e risoluzione dei problemi relativi allo stato di integrità degli endpoint
- Ottenere visibilità sullo stato di integrità dell'endpoint
- Finalità di audit e conformità
I controlli di integrità registrano le informazioni sulle transizioni 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 i log GCE Instance Group
e Network Endpoint Group
siano consentiti, 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
Nella console Google Cloud, vai alla pagina Controlli di integrità.
Fai clic su Crea controllo di integrità.
In 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
attiva il logging per il controllo di integrità.
Terraform
Per creare un controllo di integrità per diversi protocolli con logging, utilizza il metodo
google_compute_health_check
risorsa.
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 in 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 On.
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
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
disabilita il logging per il controllo di integrità in questione.
Visualizza i log
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.
Per visualizzare tutti i log, nel menu Risorsa, seleziona una delle seguenti opzioni:
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 metriche basate su log per il bilanciatore del carico e controlli di integrità.
Utilizzare 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 un valore false
, il campo viene omesso dal log.
La codifica UTF-8 è obbligatoria per i campi di log. I caratteri non UTF-8 vengono sostituiti con punti di domanda.
Che cosa viene registrato
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, ad esempio gravità, ID progetto, il numero del progetto e il 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 vari
stati.
I NEG ibride 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 integrità di base | Stato di salute dettagliato |
---|---|
HEALTHY |
HEALTHY DRAINING
|
UNHEALTHY |
UNKNOWN UNHEALTHY TIMEOUT
|
Le modifiche dello stato non sempre alterano il comportamento del bilanciatore del carico. Prendi in considerazione il seguente caso:
- Il server fornisce la risposta sbagliata, pertanto 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 statoTIMEOUT
dettagliato corrisponde allo statoUNHEALTHY
di base.
La tabella seguente fornisce una definizione di ogni stato di integrità.
Stato dettagliato del controllo di integrità | Significato | Stato 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 le nuove vengono rifiutate. 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 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
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à. 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 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 del 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'indirizzo IP principale di rete 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à 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 delle possibilità, consulta
Stati dei controlli 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 Per TCP/SSL, si tratta della stringa facoltativa configurata
inviate dopo che è stata stabilita la connessione per il controllo di integrità
(campo 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 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 |
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 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 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, ciò corrisponde l'indirizzo IP del proxy dalla 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 probe di Cloud DNS
criteri di routing, 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 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 era il 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 particolare 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 sono in stato 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 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 gli endpoint vengono eliminati. Ad esempio, quando interrompi una VM.
Passaggi successivi
- Leggi le informazioni concettuali sui controlli di integrità.
- Crea un controllo di integrità.
- Scopri di più su Logging.