Logging
Puoi abilitare, disabilitare e visualizzare i log per un bilanciatore del carico delle applicazioni esterno servizio di backend. Per i bilanciatori del carico delle applicazioni esterni con backend bucket, logging è abilitato automaticamente e non può essere disabilitato.
Puoi abilitare o disabilitare il logging per ciascun servizio di backend. Puoi configurare se registrare tutte le richieste o una frazione campionata in modo casuale.
Devi assicurarti di non avere un'esclusione dei log applicata ai bilanciatori del carico delle applicazioni esterni. Per istruzioni su come verificare che i log Cloud HTTP Load
Balancer
siano consentiti, consulta Visualizzazione del tipo di risorsa
esclusioni.
Campionamento e raccolta dei log
Le richieste (e le risposte corrispondenti) gestite dal backend del bilanciatore del carico
di macchine virtuali (VM) vengono campionate. Queste richieste campionate vengono quindi elaborate per generare i log. Puoi controllare la frazione delle richieste che vengono generate come voci di log in base al parametro
logConfig.sampleRate.
Se logConfig.sampleRate
è 1.0
(100%), i log vengono
generati per tutte le richieste e scritti in Cloud Logging.
Abilitazione del logging su un nuovo servizio di backend
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul nome del bilanciatore del carico.
Fai clic su
Modifica.Fai clic su Configurazione backend.
Seleziona Crea un servizio di backend.
Compila i campi del servizio di backend richiesti.
Nella sezione Logging, seleziona la casella di controllo Abilita il logging.
Imposta una frazione della frequenza di campionamento. Puoi impostare un numero compreso tra
0.0
e1.0
, dove0.0
indica che nessuna richiesta viene registrata e1.0
indica che il 100% delle richieste viene registrato. Il valore predefinito è1.0
.Per completare la modifica del servizio di backend, fai clic su Aggiorna.
Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.
gcloud: modalità globale
Crea un servizio di backend e abilita il logging utilizzando il metodo
Comando gcloud compute backend-services create
.
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con i bilanciatori del carico delle applicazioni esterni globali.--enable-logging
abilita il logging per il servizio di backend.--logging-sample-rate
ti consente di specificare un valore compreso tra0.0
e1.0
, dove0.0
indica che nessuna richiesta viene registrata e1.0
indica che il 100% delle richieste viene registrato. Ha significato solo con il parametro--enable-logging
. È in corso l'abilitazione del logging, ma l'impostazione la frequenza di campionamento a0.0
equivale a disabilitare il logging. Il valore predefinito è1.0
.
gcloud: modalità classica
Crea un servizio di backend e abilita il logging utilizzando il metodo
Comando gcloud compute backend-services create
.
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con un bilanciatore del carico delle applicazioni classico.--enable-logging
abilita il logging per il servizio di backend.--logging-sample-rate
ti consente di specificare un valore compreso tra0.0
e1.0
, dove0.0
indica che nessuna richiesta viene registrata e1.0
indica che il 100% delle richieste viene registrato. Significativo solo con Parametro--enable-logging
. È in corso l'abilitazione del logging, ma l'impostazione la frequenza di campionamento a0.0
equivale a disabilitare il logging. Il valore predefinito è1.0
.
Abilitazione del logging su un servizio di backend esistente
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul nome del bilanciatore del carico.
Fai clic su
Modifica.Fai clic su Configurazione backend.
Fai clic su
Modifica accanto di servizio di backend.Nella sezione Logging, seleziona la casella di controllo Attiva il logging.
Imposta la probabilità di campionamento nel campo Frequenza di campionamento. Puoi impostare un numero compreso tra
0.0
e1.0
, dove0.0
indica che nessuna richiesta viene registrata e1.0
indica che il 100% delle richieste viene registrato. Il valore predefinito è1.0
.Per completare la modifica del servizio di backend, fai clic su Aggiorna.
Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.
gcloud: modalità globale
Abilita il logging su un servizio di backend esistente con il
comando gcloud compute backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con i bilanciatori del carico delle applicazioni esterni globali.--enable-logging
abilita il logging per il servizio di backend.--logging-sample-rate
ti consente di specificare un valore compreso tra0.0
e1.0
, dove0.0
indica che nessuna richiesta viene registrata e1.0
indica che il 100% delle richieste viene registrato. Ha significato solo con il parametro--enable-logging
. È in corso l'abilitazione del logging, ma l'impostazione la frequenza di campionamento a0.0
equivale a disabilitare il logging. Il valore predefinito è1.0
.
gcloud: modalità classica
Abilita il logging su un servizio di backend esistente con il
comando gcloud compute backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con un bilanciatore del carico delle applicazioni classico.--enable-logging
abilita il logging per il servizio di backend.--logging-sample-rate
ti consente di specificare un valore da Da0.0
a1.0
, dove0.0
indica che non viene registrata alcuna richiesta1.0
significa che viene registrato il 100% delle richieste. Ha significato solo con il parametro--enable-logging
. È in corso l'abilitazione del logging, ma l'impostazione la frequenza di campionamento a0.0
equivale a disabilitare il logging. Il valore predefinito è1.0
.
Disattivare o modificare il logging su un servizio di backend esistente
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul nome del bilanciatore del carico.
Fai clic su
Modifica.Fai clic su Configurazione backend.
Fai clic su
Modifica accanto al servizio di backend.Per disattivare completamente il logging, nella sezione Logging, deseleziona la casella di controllo Abilita il logging.
Se lasci abilitato il logging, puoi impostare una frequenza di campionamento diversa. in una frazione di parole. Puoi impostare un numero da
0.0
a1.0
, dove0.0
significa che non viene registrata alcuna richiesta e1.0
significa che il 100% vengono registrate nel log. Il valore predefinito è1.0
. Ad esempio,0.2
significa che il 20% delle richieste campionate genera log.Per completare la modifica del servizio di backend, fai clic su Aggiorna.
Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.
gcloud: modalità globale
Disabilita il logging su un servizio di backend con
Comando gcloud compute backend-services update
.
Disattivare completamente il logging
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con i bilanciatori del carico delle applicazioni esterni globali.--region
indica che il servizio di backend è regionale. Utilizza questo campo per i servizi di backend utilizzati con di Application Load Balancer esterni regionali.--no-enable-logging
disattiva il logging per il servizio di backend.
Modifica della frequenza di campionamento di logging
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
gcloud: modalità classica
Disabilita il logging su un servizio di backend con
Comando gcloud compute backend-services update
.
Disattivare completamente il logging
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con un bilanciatore del carico delle applicazioni classico.--no-enable-logging
disattiva il logging per il servizio di backend.
Modifica della frequenza di campionamento di logging
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
dove
--global
indica che il servizio di backend è globale. Utilizza questo campo per i servizi di backend utilizzati con un bilanciatore del carico delle applicazioni classico.--logging-sample-rate
ti consente di specificare un valore da Da0.0
a1.0
, dove0.0
indica che non viene registrata alcuna richiesta1.0
significa che viene registrato il 100% delle richieste. Significativo solo con Parametro--enable-logging
. Attivare il logging, ma impostare la frequenza di campionamento su0.0
equivale a disattivare il logging.
Visualizza i log
Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:
I log HTTP(S) vengono indicizzati prima da un regola di forwarding, e poi da una mappa URL.
Per visualizzare i log, vai alla pagina Esplora log:
Per visualizzare tutti i log, nel menu del filtro Risorsa, seleziona Cloud HTTP Load (Carico HTTP Cloud) Bilanciatore > Tutte le regole di forwarding.
Per visualizzare i log per una regola di forwarding, selezionane il nome.
Per visualizzare i log di una mappa URL, seleziona una regola di inoltro e poi una mappa URL.
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 è obbligatoria per i campi di log. I caratteri non UTF-8 vengono sostituiti con punti di domanda.
Per i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni esterni globali, puoi esportare le metriche basate su log utilizzando i log delle risorse (resource.type="http_load_balancer"
). Le metriche create si basano sulla risorsa "Regola bilanciatore del carico delle applicazioni (metriche basate su log)" (l7_lb_rule
), disponibile nelle dashboard di Cloud Monitoring anziché nella risorsa https_lb_rule
.
Che cosa viene registrato nei log
Le voci di log del bilanciatore del carico delle applicazioni esterno contengono informazioni utili per: monitoraggio e debug del traffico HTTP(S). I record di log contengono elementi obbligatori , che sono i campi predefiniti di ogni record di log.
Campo | Formato del campo | Tipo di campo: obbligatorio o facoltativo | Descrizione |
---|---|---|---|
gravità insertID logName |
LogEntry | Obbligatorio | I campi generali descritti in una voce di log. |
timestamp | string (
|
Facoltativo | L'ora in cui il primo livello GFE riceve la richiesta. |
httpRequest | HttpRequest | Obbligatorio | Un protocollo comune per la registrazione delle richieste HTTP.
|
resource | MonitoredResource | Obbligatorio | La risorsa MonitoredResource è il tipo di risorsa associato a una voce di log. MonitoredResourceDescriptor descrive lo schema di un oggetto |
jsonPayload | Oggetto (formato Struct) | Obbligatorio | Il payload della voce di log espresso come oggetto JSON. L'oggetto JSON contiene i seguenti campi:
|
string | Obbligatorio | Il campo statusDetails contiene una stringa che spiega perché il bilanciatore del carico ha restituito lo stato HTTP visualizzato. Per ulteriori informazioni su queste stringhe di log,
vedi i messaggi di operazione riuscita HTTP statusDetails e
Messaggi di errore HTTP statusDetails. |
|
string | Obbligatorio | Il campo backendTargetProjectNumber contiene il progetto
numero in cui il target del backend: servizio di backend o backend
di Cloud Shell. Questo campo è nel formato:
"projects/PROJECT_NUMBER" . Queste informazioni sono disponibili solo per i bilanciatori del carico delle applicazioni esterni globali che utilizzano le risposte agli errori personalizzate. |
|
integer | Obbligatorio | overrideResponseCode contiene il codice di risposta di override applicato alla risposta inviata al client. Queste informazioni sono
disponibili solo per i bilanciatori del carico delle applicazioni esterni globali che utilizzano le risposte agli errori personalizzate. |
|
string | Obbligatorio | Il campo errorService contiene il servizio di backend che
ha fornito la risposta di errore personalizzata. Queste informazioni sono disponibili solo per i bilanciatori del carico delle applicazioni esterni globali che utilizzano le risposte agli errori personalizzate. |
|
string | Obbligatorio | Il campo errorBackendStatusDetails contiene
statusDetails della risposta finale fornita al cliente.
Queste informazioni sono disponibili solo per i bilanciatori del carico delle applicazioni esterni globali che utilizzano un errore personalizzato
risposte personalizzate. |
Etichette risorse
La tabella seguente elenca le etichette delle risorse per
resource.type="http_load_balancer"
.
Campo | Tipo | Descrizione |
---|---|---|
backend_service_name |
string | Il nome del servizio di backend. |
forwarding_rule_name |
string | Il nome dell'oggetto regola di inoltro. |
project_id |
string | L'identificatore del progetto Google Cloud associato a questa risorsa. |
target_proxy_name |
string | Il nome del l'oggetto proxy di destinazione a cui fa riferimento la regola di forwarding. |
url_map_name |
string | Il nome dell'oggetto mappa URL configurato per selezionare un servizio di backend. |
zone |
string | La zona in cui viene eseguito il carico
è in esecuzione il bilanciatore del carico. La zona è global . |
Messaggi di successo HTTP statusDetails
statusDetails (esito positivo) | Significato | Codici di risposta comuni associati |
---|---|---|
byte_range_caching
|
La richiesta HTTP è stata gestita utilizzando Cloud CDN memorizzazione nella cache dell'intervallo di byte. | È possibile utilizzare qualsiasi codice di risposta memorizzabile nella cache. |
response_from_cache
|
La richiesta HTTP è stata gestita da una cache di Cloud CDN. | È possibile utilizzare qualsiasi codice di risposta memorizzabile nella cache. |
response_from_cache_validated
|
Il codice restituito è stato impostato da una voce di Cloud CDN memorizzata nella cache che era convalidata da un backend. | È possibile qualsiasi codice di risposta memorizzabile nella cache. |
response_sent_by_backend
|
La richiesta HTTP è stata proxyata correttamente al backend e la risposta è stata restituita dal backend. | Il codice di risposta HTTP viene impostato dal software in esecuzione sul backend. |
Messaggi di errore HTTP statusDetails
statusDetails (errore) | Significato | Codici di risposta comuni associati |
---|---|---|
aborted_request_due_to_backend_early_response
|
Una richiesta con body è stata interrotta a causa dell'invio di una richiesta prima del backend con un codice di errore. La risposta è stata inoltrata al cliente. La richiesta è stata terminata. | 4XX o 5XX |
backend_connection_closed_after_partial_response_sent
|
La connessione di backend si è chiusa in modo imprevisto dopo che è stata inviata al client una risposta parziale. | Il codice di risposta HTTP viene impostato dal software in esecuzione sul backend. Il codice di risposta HTTP 0 (zero) indica che il backend ha inviato intestazioni HTTP incomplete. Il codice di risposta HTTP è 101 se è stato eseguito l'upgrade della connessione HTTP(S) a una connessione WebSocket. |
backend_connection_closed_before_data_sent_to_client
|
Il backend ha chiuso inaspettatamente la connessione al bilanciatore del carico prima che la risposta venisse inviata tramite proxy al client. | 502, 503 Il codice di risposta HTTP è 101 se è stato eseguito l'upgrade della connessione HTTP(S) a una connessione WebSocket. |
backend_early_response_with_non_error_status
|
Il backend ha inviato una risposta diversa da errore (1XX o 2XX) a una richiesta prima che riceve l'intero corpo della richiesta. | 502, 503 |
backend_interim_response_not_supported
|
Il backend ha inviato una risposta provvisoria 1XX alla richiesta in un contesto in cui le risposte provvisorie non sono supportate. | 502, 503 |
backend_response_corrupted
|
Il corpo della risposta HTTP inviato dal backend ha un chunking non valido altrimenti la codifica del trasferimento è danneggiata. | Qualsiasi codice di risposta possibile a seconda della natura del problema. Spesso 502, 503. |
backend_response_headers_too_long
|
Le intestazioni di risposta HTTP inviate dal backend hanno superato il limite consentito. Per ulteriori informazioni, consulta la sezione Dimensione intestazione per bilanciatori del carico delle applicazioni esterni. | 502, 503 |
backend_timeout
|
Timeout del backend durante la generazione di una risposta. Per una connessione WebSocket:
|
502, 503 Il codice di risposta HTTP è 101 se è stato eseguito l'upgrade della connessione HTTP(S) a una connessione WebSocket. |
banned_by_security_policy
|
La richiesta è stata vietata da una regola di divieto basata sulla frequenza di Google Cloud Armor. | 429 |
body_not_allowed
|
Il client ha inviato una richiesta HTTP con un corpo, ma il metodo HTTP utilizzato non consentire l'accesso a un corpo. | 400 |
byte_range_caching_aborted
|
In precedenza, il bilanciatore del carico aveva ricevuto una risposta che indicava che la risorsa era memorizzabile nella cache e supportava gli intervalli di byte. Cloud CDN ricevuto una risposta incoerente (ad esempio, una con un codice di risposta) diversi dai previsti 206 Contenuti parziali). Questo è accaduto quando si è tentato di eseguire il riempimento della cache utilizzando una richiesta di intervallo di byte. Di conseguenza, il bilanciatore del carico ha interrotto la risposta al client. | 2XX |
byte_range_caching_forwarded_backend_response
|
In precedenza, il bilanciatore del carico aveva ricevuto una risposta che indicava che la risorsa era memorizzabile nella cache e supportava gli intervalli di byte. Cloud CDN ha ricevuto una risposta incoerente (ad esempio, con un codice di risposta diverso da 206 Contenuti parziali previsto). È successo quando di eseguire il riempimento della cache utilizzando richiesta di intervallo di byte. Il bilanciatore del carico ha quindi inoltrato la risposta incoerente al client. | Restituito dal backend: è possibile qualsiasi codice di risposta. |
byte_range_caching_retrieval_abandoned
|
Il client ha annullato una richiesta di intervallo di byte o una richiesta di convalida avviata dal con Cloud CDN. | Restituito dal backend: è possibile qualsiasi codice di risposta. |
byte_range_caching_retrieval_from_backend_failed_after_partial_response
|
Una richiesta di intervallo di byte o una richiesta di convalida avviata da Cloud CDN ha riscontrato un errore. Per lo stato dettagliato del backend, consulta la voce del log Cloud Logging corrispondente per la richiesta avviata da Cloud CDN. | 2XX |
cache_lookup_failed_after_partial_response
|
Il bilanciatore del carico non è riuscito a fornire una risposta completa da Cloud CDN a causa di un errore interno. | 2XX |
cache_lookup_timeout_after_partial_response
|
Lo stream di ricerca nella cache di Cloud CDN ha superato il tempo di attesa perché il client non ha recuperato i contenuti in modo tempestivo. | 2XX |
client_disconnected_after_partial_response
|
La connessione al client è stata interrotta dopo che il bilanciatore del carico ha inviato una risposta parziale. | Restituito dal backend: è possibile qualsiasi codice di risposta. Il codice di risposta HTTP è 101 se è stato eseguito l'upgrade della connessione HTTP(S) a una connessione WebSocket. |
client_disconnected_before_any_response
|
La connessione al client si è interrotta prima che il bilanciatore del carico inviasse la risposta corretta. | 0 Il codice di risposta HTTP è 101 se è stato eseguito l'upgrade della connessione HTTP(S) a una connessione WebSocket. |
client_timed_out
|
Il front-end di Google (GFE) ha messo in stato inattivo la connessione del client a causa della mancanza di progressi durante il proxy della richiesta o della risposta. | 0 o 408 |
client_cert_invalid_rsa_key_size
|
Un certificato foglia client o certificato intermedio aveva una dimensione della chiave RSA non valida. Per maggiori informazioni, consulta la sezione Errori registrati per le connessioni chiuse. | 0 |
client_cert_unsupported_elliptic_curve_key
|
Un certificato client o intermedio utilizza una curva ellittica non supportata. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. | 0 |
client_cert_unsupported_key_algorithm
|
Un certificato client o intermedio utilizza un certificato non RSA o non ECDSA dell'algoritmo. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. | 0 |
client_cert_pki_too_large
|
L'infrastruttura a chiave pubblica da utilizzare per la convalida ha più di tre certificati intermedi che condividono lo stesso soggetto e le stesse informazioni sulla chiave pubblica del soggetto. Per ulteriori informazioni, consulta Errori registrati per le connessioni chiuse. | 0 |
client_cert_chain_max_name_constraints_exceeded
|
Un certificato intermedio fornito per la convalida aveva più di dieci vincoli relativi ai nomi. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. | 0 |
client_cert_chain_invalid_eku |
Il certificato client o l'emittente non dispone di
Extended Key Usage (EKU) che include clientAuth . Per ulteriori informazioni, vedi
Errori registrati per connessioni chiuse.
|
0 |
client_cert_validation_timed_out
|
Limite di tempo superato durante la convalida della catena di certificati. Per ulteriori informazioni, consulta Errori registrati per le connessioni chiuse. | 0 |
client_cert_validation_search_limit_exceeded
|
Viene raggiunto il limite di profondità o iterazione durante il tentativo di convalidare della catena di certificati. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. | 0 |
client_cert_validation_not_performed
|
Hai configurato mTLS senza configurare un TrustConfig .
Per ulteriori informazioni, vedi
Errori registrati per connessioni chiuse.
|
0 |
client_cert_not_provided
|
Il client non ha fornito il certificato richiesto durante l'handshake. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. | 0 |
client_cert_validation_failed
|
La convalida del certificato client non va a buon fine con TrustConfig quando vengono utilizzati algoritmi di hashing come MD4, MD5 e SHA-1.
Per ulteriori informazioni, vedi
Errori registrati per connessioni chiuse.
|
0 |
config_not_found
|
Al bilanciatore del carico manca la configurazione del progetto. Ciò può verificarsi a intermittenza, soprattutto dopo aver apportato modifiche alla configurazione che aggiungono una nuova risorsa. Poiché sono presenti due livelli di proxy, a volte il GFE del primo livello non riescono a raggiungere il GFE di secondo livello. Ciò potrebbe essere dovuto a un errore interno, come un'implementazione in corso, un sovraccarico del bilanciatore del carico o problemi di configurazione intermittenti. |
404, 502, 503 |
direct_response
|
Il bilanciatore del carico ha ignorato questa richiesta e ha restituito una risposta fissa. | Potresti visualizzare qualsiasi codice di risposta HTTP a seconda della natura del problema. Ad esempio, il codice di risposta HTTP 410 indica che il backend è non disponibile a causa di insolvenza nei pagamenti. |
denied_by_security_policy
|
Il bilanciatore del carico ha negato questa richiesta a causa di un criterio di sicurezza Google Cloud Armor. | Configurata nel criterio di sicurezza. |
error_uncompressing_gzipped_body
|
Si è verificato un errore durante la decompressione di una risposta HTTP compressa con gzip. | 502, 503 |
failed_to_connect_to_backend
|
Il bilanciatore del carico non è riuscito a connettersi al backend. Sono inclusi i timeout durante la fase di connessione. | 502, 503 |
failed_to_pick_backend
|
Il bilanciatore del carico non è riuscito a scegliere un backend integro per gestire la richiesta. | 502, 503 |
failed_to_negotiate_alpn
|
Il bilanciatore del carico e il backend non sono riusciti a negoziare un'applicazione Layer Protocol (come HTTP/2) da utilizzare per comunicare TLS. | 502, 503 |
headers_too_long
|
Le intestazioni delle richieste erano più grandi del numero massimo consentito. | 413 |
http_version_not_supported
|
Versione HTTP non supportata. Attualmente solo HTTP 0.9, 1.0, 1.1 e 2.0 sono supportati. | 400 |
internal_error
|
Errore interno del bilanciatore del carico. In genere rappresenta un errore transitorio nell'infrastruttura del bilanciatore del carico. Riprova a eseguire la query. | 4XX |
invalid_external_origin_endpoint
|
La configurazione del backend esterno non è valida. Esamina la configurazione del NEG internet e assicurati che specifichi un FQDN/indirizzo IP e una porta validi. | 4XX |
invalid_request_headers
|
Le intestazioni delle richieste HTTP ricevute da un client contengono almeno un carattere non consentito da una specifica HTTP applicabile. Ad esempio, nomi dei campi di intestazione che includono virgolette doppie.
( Per ulteriori informazioni, vedi: |
400 |
invalid_http2_client_header_format
|
Le intestazioni HTTP/2 di un client non sono valide. Per ulteriori informazioni, consulta
invalid_request_headers .
|
400 |
multiple_iap_policies
|
Non è possibile eseguire più criteri Identity-Aware Proxy (IAP) combinati. Se hai un criterio IAP associato a un servizio di backend e un altro associato a un oggetto serverless, rimuovi uno dei criteri e riprova. Gli oggetti serverless includono App Engine, le funzioni di Cloud Run e Cloud Run. | 500 |
malformed_chunked_body
|
Il corpo della richiesta è stato codificato in modo errato. | 411 |
request_loop_detected
|
Il bilanciatore del carico ha rilevato un ciclo di richieste. Questo loop può essere causato da un errore di configurazione in cui il backend ha inoltrato la richiesta al carico con il bilanciatore del carico di rete passthrough esterno regionale. | 502, 503 |
required_body_but_no_content_length
|
La richiesta HTTP richiede un corpo, ma le intestazioni della richiesta non includono un'intestazione chunked con codifica per il trasferimento o la lunghezza dei contenuti. | 400 o 403 |
secure_url_rejected
|
È stata ricevuta una richiesta con un URL https:// su un HTTP/1.1 in testo non crittografato connessione. | 400 |
ssl_certificate_san_verification_failed
|
Il bilanciatore del carico non è riuscito a trovare una SAN (Subject Alternative Name) nel Certificato SSL presentato dal backend che corrisponde al nome host configurato. | 502, 503 |
ssl_certificate_chain_verification_failed
|
Il certificato SSL presentato dal backend non ha superato il certificato SSL verifica. | 502, 503 |
throttled_by_security_policy
|
La richiesta è stata bloccata da una regola di throttling di Google Cloud Armor. | 429 |
unsupported_method
|
Il client ha fornito un metodo di richiesta HTTP non supportato. | 400 |
unsupported_100_continue
|
La richiesta del cliente includeva "Aspetta: 100-continua" su un protocollo che non la supporta. | 400 |
upgrade_header_rejected
|
La richiesta HTTP del client conteneva l'intestazione Upgrade ed è stata rifiutata. | 400 |
websocket_closed
|
La connessione WebSocket è stata chiusa. | 101 |
websocket_handshake_failed
|
L'handshake websocket non è riuscito. | Qualsiasi codice di risposta possibile a seconda della natura dell'errore di handshake. |
request_body_too_large
|
Il corpo della richiesta HTTP ha superato il limite massimo supportato dal backend. Non applicabile per i backend delle VM. | 413 |
handled_by_identity_aware_proxy
|
Questa risposta è stata generata da Identity-Aware Proxy durante verifica dell'identità del client prima di consentire l'accesso. | 200, 302, 400, 401, 403, 500, 502, 503 |
serverless_neg_routing_failed
|
Impossibile inviare la richiesta NEG serverless. Questo errore può verificarsi quando la regione specificata nel NEG non può essere raggiunta o quando impossibile trovare il nome risorsa (ad esempio, il nome delle funzioni Cloud Run). | 404, 502, 503 |
fault_filter_abort
|
Questo errore può verificarsi se il cliente ha configurato un filtro di errore e è stato attivato il filtro degli errori per la richiesta specificata. | Il valore deve essere compreso tra 200 e 599. |
Visualizza i log per la convalida dei certificati client mTLS
Per visualizzare gli errori registrati per le connessioni chiuse durante la convalida del certificato client TLS mutuale, completa i seguenti passaggi.
Query sulla console
Nella console Google Cloud, vai alla pagina Esplora log.
Fai clic sul pulsante di attivazione/disattivazione Mostra query.
Incolla quanto segue nel campo della query. Sostituisci
FORWARDING_RULE_NAME
con il nome della regola di inoltro.jsonPayload.statusDetails=~"client_cert" jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
Fai clic su Esegui query.
Log delle richieste dei criteri di autorizzazione
L'oggetto authz_info
nel payload JSON delle voci di log del bilanciatore del carico contiene
informazioni sui criteri di autorizzazione. Puoi configurare le metriche basate su log
per il traffico consentito o negato da questi criteri.
Campo | Tipo | Descrizione |
---|---|---|
authz_info.policies[] |
oggetto | L'elenco dei criteri che corrispondono alla richiesta. |
authz_info.policies[].name |
string | Il nome del criterio di autorizzazione corrispondente alla richiesta. Il nome è vuoto per i seguenti motivi:
|
authz_info.policies[].result |
enum | Il risultato può essere ALLOWED o DENIED . |
authz_info.policies[].details |
string | I dettagli includono quanto segue:
|
authz_info.overall_result |
enum | Il risultato può essere ALLOWED o DENIED . |
Log per i bucket di backend
Il logging è abilitato automaticamente per i bilanciatori del carico con bucket di backend. Non puoi modificare o disattivare il logging per i bucket di backend.
Log per Google Cloud Armor
La tabella dei statusDetail
messaggi di errore HTTP contiene alcuni messaggi che si applicano a Google Cloud Armor. Per ulteriori informazioni su cosa viene registrato da Google Cloud Armor, consulta Utilizzare il logging delle richieste.
Logging per i deployment di reti VPC condiviso
I log e le metriche del bilanciatore del carico delle applicazioni vengono generalmente esportati nel progetto che include la regola di forwarding. Pertanto, gli amministratori del servizio, proprietari o utenti di i progetti in cui viene creato il servizio di backend, dei log e delle metriche del bilanciatore del carico. Puoi utilizzare i ruoli IAM per concedere queste autorizzazioni agli amministratori del servizio. Per saperne di più sulle i ruoli IAM disponibili e i passaggi per fornire l'accesso. consulta l'articolo Concedere l'accesso a monitoraggio.
Interazione con i log
Puoi interagire con i log del bilanciatore del carico delle applicazioni esterno utilizzando l'API Cloud Logging. L'API Logging fornisce modi per filtrare in modo interattivo i log con campi specifici impostati. Esporta i log corrispondenti in Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Per ulteriori informazioni sull'API Logging, consulta la panoramica dell'API Cloud Logging.
Monitoraggio
Il bilanciatore del carico esporta i dati di monitoraggio in Cloud Monitoring.
Puoi utilizzare le metriche di monitoraggio per:
- Valutare la configurazione, l'utilizzo e le prestazioni di un bilanciatore del carico
- Risoluzione dei problemi
- Migliora l'utilizzo delle risorse e l'esperienza utente
Oltre alle dashboard predefinite in Cloud Monitoring, puoi creare dashboard personalizzate, configurare avvisi ed eseguire query sulle metriche tramite API Cloud Monitoring.
Visualizzazione delle dashboard di Cloud Monitoring predefinite
Cloud Monitoring fornisce dashboard predefinite per monitorare i bilanciatori di carico. Queste dashboard vengono compilate automaticamente e configurazione in Cloud Monitoring.
Per accedere alle dashboard predefinite:
Vai a Monitoring nella console Google Cloud.
Nel riquadro di navigazione Monitoraggio, fai clic su Dashboard.
In Categorie, fai clic su Google Cloud.
Per visualizzare un elenco di dashboard per tutti i tuoi carichi di lavoro Google Cloud bilanciatori del carico, seleziona la dashboard denominata Bilanciatori del carico Google Cloud. Individua la dashboard di un bilanciatore del carico specifico nell'elenco e fai clic sul suo nome.
Per visualizzare le dashboard predefinite solo per gli Application Load Balancer esterni, Seleziona la dashboard denominata Bilanciatori del carico HTTP(S) esterni. Questa pagina mostra una dashboard che indica i rapporti di risposta 5XX e la latenza del backend per tutti i bilanciatori del carico delle applicazioni esterni nel progetto. Offre inoltre un elenco di dashboard per tutti i bilanciatori del carico delle applicazioni esterni nel progetto.
Puoi fare clic sulla dashboard di ogni bilanciatore del carico. Ogni dashboard include:- Grafici precompilati che mostrano le suddivisioni per risposte classi di codici di risposta (5XX, 4XX, 3XX, 2XX)
- Latenza totale
- Latenza di backend
- RTT del frontend
- Conteggio delle richieste
- Un link ai log del bilanciatore del carico
Per visualizzare le dashboard per i servizi di terze parti, torna alla pagina Dashboard. In Categorie, fai clic su Altro.
- Per visualizzare la dashboard di un servizio di terze parti specifico, individuala nell'elenco e fai clic sul suo nome.
Definizione dei criteri di avviso
Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:
Puoi creare criteri di avviso per monitorare i valori delle metriche e ricevere notifiche quando queste metriche violano una condizione.
-
Nella console Google Cloud, vai alla pagina notifications Avvisi:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Se non hai creato i canali di notifica e vuoi ricevere notifiche, fai clic su Modifica canali di notifica e aggiungi i tuoi canali di notifica. Torna a Avvisi dopo aver aggiunto i canali.
- Nella pagina Avvisi, seleziona Crea criterio.
- Per selezionare la metrica, espandi il menu Seleziona una metrica e poi segui questi passaggi:
- Per limitare il menu alle voci pertinenti, inserisci
Global External Application Load Balancer Rule
nella barra dei filtri. Se non ci sono risultati dopo aver filtrato il menu, disattiva fai clic su Mostra solo risorse attive pulsante di attivazione/disattivazione delle metriche. - Per Tipo di risorsa, seleziona Regola per bilanciatore del carico delle applicazioni esterno globale.
- Seleziona una Categoria di metriche e una Metrica, quindi seleziona Applica.
- Per limitare il menu alle voci pertinenti, inserisci
- Fai clic su Avanti.
- Le impostazioni nella pagina Configura attivatore di avvisi determinano quando viene attivato l'avviso. Seleziona un tipo di condizione e, se necessario, specifica una soglia. Per ulteriori informazioni, consulta Creare criteri di avviso basati su soglie di metriche.
- Fai clic su Avanti.
- (Facoltativo) Per aggiungere notifiche al criterio di avviso, fai clic su Canali di notifica. Nella finestra di dialogo, seleziona uno o più canali di notifica dal menu e fai clic su OK.
- (Facoltativo) Aggiorna la Durata della chiusura automatica degli incidenti. Questo campo determina quando Il monitoraggio chiude gli incidenti in assenza di dati delle metriche.
- (Facoltativo) Fai clic su Documentazione e aggiungi tutte le informazioni che vuoi includere in un messaggio di notifica.
- Fai clic su Nome avviso e inserisci un nome per il criterio di avviso.
- Fai clic su Crea criterio.
Definizione delle dashboard personalizzate di Cloud Monitoring
Puoi creare dashboard di Cloud Monitoring personalizzate per il bilanciamento del carico metriche:
Nella console Google Cloud, vai alla pagina Monitoring.
Seleziona Dashboard > Crea dashboard.
Fai clic su Aggiungi grafico e poi assegna un titolo al grafico.
Per identificare le serie temporali da visualizzare, scegli un tipo di risorsa e tipo di metrica:
- Nella sezione Risorse e Metrica, fai clic sul grafico e poi
Nella sezione Seleziona una metrica, scegli una delle opzioni disponibili:
- Per un bilanciatore del carico delle applicazioni esterno globale, seleziona il tipo di risorsa Regola del bilanciatore del carico delle applicazioni esterno globale.
- Fai clic su Applica.
- Nella sezione Risorse e Metrica, fai clic sul grafico e poi
Nella sezione Seleziona una metrica, scegli una delle opzioni disponibili:
Per specificare i filtri di monitoraggio, fai clic su Filtri > Aggiungi filtro.
Fai clic su Salva.
Frequenza e fidelizzazione dei report sulle metriche
Le metriche per i bilanciatori del carico delle applicazioni esterni vengono esportate in Cloud Monitoring Batch con granularità di 1 minuto. I dati di monitoraggio vengono conservati per sei (6) settimane.
La dashboard fornisce l'analisi dei dati in intervalli predefiniti di 1H (un'ora), 6H (sei ore), 1D (un giorno), 1W (una settimana) e 6W (sei settimane). Puoi richiedere manualmente l'analisi in qualsiasi intervallo compreso tra 6 W e 1 minuto.
Monitoraggio delle metriche
Puoi monitorare le seguenti metriche per i bilanciatori del carico delle applicazioni esterni.
Le seguenti metriche per i bilanciatori del carico delle applicazioni esterni globali vengono
registrate in Cloud Monitoring.
Queste metriche sono precedute da loadbalancing.googleapis.com/
.
Metrica | Nome | Descrizione |
---|---|---|
Conteggio delle richieste | https/request_count |
Il numero di richieste gestite dal bilanciatore del carico delle applicazioni esterno |
Conteggio byte richiesta | https/request_bytes_count |
Il numero di byte inviati come richieste dai client al bilanciatore del carico delle applicazioni esterno |
Conteggio byte risposta | https/response_bytes_count |
Il numero di byte inviati come risposte dal bilanciatore del carico delle applicazioni esterno ai client |
Latenze totali | https/total_latencies |
Una distribuzione della latenza. La latenza è il tempo che intercorre tra il primo byte della richiesta ricevuta e l'ultimo byte della risposta inviata dal GFE. Le latenze totali vengono misurate in base alla richiesta/risposta. Mette in pausa tra le richieste
sulla stessa connessione che usano Per le connessioni WebSocket, questo campo si riferisce all'intera durata della connessione.† Esempio: un bilanciatore del carico ha 1 richiesta al secondo dal Regno Unito, tutte con 100 ms e 9 richieste al secondo dagli Stati Uniti, tutte con una latenza di 50 ms. Oltre un in un determinato minuto ci sono state 60 richieste dal Regno Unito e 540 richieste dal Stati Uniti. Le metriche di monitoraggio mantengono la distribuzione in tutte le dimensioni. Tu può richiedere informazioni quali:
|
RTT frontend* | https/frontend_tcp_rtt |
Una distribuzione del tempo di round trip (RTT) uniformato misurata per ogni connessione tra il client e il GFE (misurata dallo stack TCP del GFE). Il RTT appiattito è un algoritmo che gestisce le variazioni e le anomalie che possono verificarsi nelle misurazioni del RTT. |
Latenze di backend* | https/backend_latencies |
Una distribuzione della latenza misurata dal momento della prima richiesta il byte è stato inviato dal GFE al backend, finché il GFE non ha ricevuto esegui il backend dell'ultimo byte della risposta. Per le connessioni WebSocket, le latenze di backend si applicano all'intero durata della sessione WebSocket.† |
Frazione della classe del codice di risposta | Frazione delle risposte totali del bilanciatore del carico delle applicazioni esterno in ognuna classe del codice di risposta (2XX, 4XX, ...). In Cloud Monitoring, questo valore disponibile solo nelle dashboard predefinite. Non è disponibile per le dashboard personalizzate. Puoi utilizzare l'API per impostare avvisi. | |
Conteggio di richieste di backend | https/backend_request_count |
Il numero di richieste inviate dal bilanciatore del carico delle applicazioni esterno ai backend. |
Conteggio byte richieste backend | https/backend_request_bytes_count |
Il numero di byte inviati come richieste dal bilanciatore del carico delle applicazioni esterno ai backend. |
Conteggio dei byte della risposta del backend | https/backend_response_bytes_count |
Il numero di byte inviati come risposte dai backend (tra cui Cache) al bilanciatore del carico delle applicazioni esterno. |
* Non è garantito che la somma delle latenze RTT del frontend e del backend sia inferiore o uguale alle latenze totali. Questo perché sebbene polliamo RTT sopra dal GFE al client nel momento in cui la risposta HTTP viene confermata, ci affidiamo report kernel per alcune di queste misurazioni e non possiamo garantire il kernel avrà una misurazione RTT per la risposta HTTP data. Il risultato finale è un valore RTT appiattito che è influenzato anche dalle risposte HTTP, dai SYN/ACK e dalle handshake SSL precedenti che non influiscono sui tempi effettivi della richiesta HTTP corrente.
† Per monitorare le connessioni WebSocket, crea un servizio di backend specifico per i WebSocket.
Filtrare le dimensioni per le metriche
Puoi applicare filtri per le metriche dei bilanciatori del carico delle applicazioni esterni.
Le metriche vengono aggregate per ogni bilanciatore del carico delle applicazioni classico e bilanciatore del carico delle applicazioni esterno globale. Puoi filtrare
le metriche aggregate in base alle seguenti dimensioni per
resource.type="http_load_balancer"
o resource.type="https_lb_rule"
. Tieni conto che non tutte le dimensioni sono disponibili per tutte le metriche.
Proprietà | Descrizione |
---|---|
backend_scope |
L'ambito Google Cloud
(regione o zona)
del gruppo di istanze di servizio di backend che ha fornito la connessione. Se non era disponibile alcun gruppo di istanze o se la richiesta è stata eseguita da un'altra entità, al posto della regione o della zona del gruppo di istanze del servizio di backend viene visualizzato uno dei seguenti valori.
Quando viene scelta questa suddivisione, i grafici mostrano le metriche di backend (da bilanciatore del carico a backend), non le metriche di frontend (da client a bilanciatore del carico). |
backend_type |
Il nome del gruppo di backend che ha gestito la richiesta del client.
Può essere
|
backend_target_type |
Il nome del servizio di backend che ha gestito la richiesta. Può essere
BACKEND_SERVICE , BACKEND_BUCKET ,
UNKNOWN se il backend non è stato assegnato o
NO_BACKEND_SELECTED se si è verificato un errore o un'altra interruzione prima che fosse possibile selezionare un
backend o si sia verificato un reindirizzamento dell'URL. |
matched_url_path_rule |
La regola del percorso della mappa degli URL corrispondente al prefisso della richiesta HTTP(S) (fino a 50 caratteri). |
forwarding_rule_name |
Il nome della regola di forwarding utilizzata dal client per inviare la richiesta. |
url_map_name |
La regola del percorso o della route della mappa URL configurata come parte della chiave della mappa URL. Può essere
|
target_proxy_name |
Il nome dell'oggetto proxy HTTP(S) di destinazione a cui fa riferimento la regola di forwarding. |
backend_target_name |
Il nome della destinazione del backend. La destinazione può essere un backend
o un bucket di backend. UNKNOWN viene restituito se un backend
non era assegnato.
|
backend_name |
Il nome del gruppo di istanza di backend, del bucket o del NEG.
UNKNOWN viene restituito se il backend non è stato assegnato oppure
NO_BACKEND_SELECTED se si è verificato un errore o un'altra interruzione
prima che sia possibile selezionare un backend o
è avvenuto un reindirizzamento URL. |
backend_scope_type |
Il tipo di ambito del gruppo di backend. Può essere
|
proxy_continent |
Continente del GFE HTTP(S) che ha terminato la connessione HTTP(S).
(Esempi: America , Europe , Asia ) |
protocol |
Protocollo utilizzato dal client, uno dei seguenti: HTTP/1.0 ,
HTTP/1.1 , HTTP/2.0 , QUIC/HTTP/2.0 ,
UNKNOWN . |
response_code |
Il codice di risposta HTTP della richiesta. |
response_code_class |
La classe del codice di risposta HTTP della richiesta: 200, 300, 400, 500 o 0 per nessuno. |
cache_result |
Risultato nella cache per l'elaborazione di una richiesta HTTP tramite proxy: HIT ,
MISS , DISABLED , PARTIAL_HIT (per un
richiesta fornita in parte dalla cache e in parte dal backend) o
UNKNOWN . |
client_country |
Paese del client che ha emesso la richiesta HTTP (ad esempio,
United States o Germany ) |
load_balancing_scheme |
Lo schema di bilanciamento del carico utilizzato. Se si utilizza il bilanciatore del carico delle applicazioni classico,
è EXTERNAL . Se viene utilizzato il bilanciatore del carico delle applicazioni esterno globale, il valore
è EXTERNAL_MANAGED . |