Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno regionale

Questo documento illustra come configurare e utilizzare Cloud Logging e Cloud Monitoring con bilanciatori del carico delle applicazioni esterni regionali.

Logging

Puoi attivare, disattivare e visualizzare i log per un servizio di backend del bilanciatore del carico delle applicazioni esterno.

Attiva o disattiva il logging per ogni 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 Visualizzare le esclusioni per tipo di risorsa.

Campionamento e raccolta dei log

Le richieste (e le risposte corrispondenti) gestite dalle istanze di macchine virtuali (VM) del backend del bilanciatore del carico 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. Quando logConfig.sampleRate è 1.0 (100%), significa che i log vengono generati per tutte le richieste e scritti in Cloud Logging.

Campi facoltativi

I record dei log contengono campi obbligatori e facoltativi. La sezione Che cosa viene registrato elenca i campi facoltativi e quelli obbligatori. Tutti i campi obbligatori sono sempre inclusi. Puoi personalizzare i campi facoltativi da conservare.

  • Se selezioni Includi tutti i campi facoltativi, tutti i campi facoltativi nel formato del record di log vengono inclusi nei log. Quando vengono aggiunti nuovi campi facoltativi al formato del record, i log includono automaticamente i nuovi campi.

  • Se selezioni Escludi tutti i campi facoltativi, tutti i campi facoltativi vengono omessi.

  • Se selezioni Personalizzato, puoi specificare i campi facoltativi che vuoi includere, ad esempio tls.protocol,tls.cipher.

Per istruzioni su come personalizzare i campi facoltativi, consulta Attivare il logging su un nuovo servizio di backend.

Attivazione del logging su un nuovo servizio di backend

Console

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul nome del bilanciatore del carico.

  3. Fai clic su Modifica.

  4. Fai clic su Configurazione backend.

  5. Seleziona Crea un servizio di backend.

  6. Compila i campi del servizio di backend richiesti.

  7. Nella sezione Logging, seleziona la casella di controllo Attiva il logging.

  8. Imposta una frazione di Frequenza di campionamento. Puoi impostare un numero compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Il valore predefinito è 1.0.

  9. (Facoltativo) Per includere tutti i campi facoltativi nei log, nella sezione Campi facoltativi, fai clic su Includi tutti i campi facoltativi.

  10. Per completare la modifica del servizio di backend, fai clic su Aggiorna.

  11. Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.

gcloud: modalità regionale

Crea un servizio di backend e abilita la registrazione utilizzando il comando gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

dove

  • --region indica che il servizio di backend è regionale. Utilizza questo campo per i servizi di backend utilizzati con bilanciatori del carico delle applicazioni esterni regionali.
  • --enable-logging abilita il logging per il servizio di backend.
  • --logging-sample-rate ti consente di specificare un valore compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Ha significato solo con il parametro --enable-logging. Attivare il logging, ma impostare la frequenza di campionamento su 0.0 equivale a disattivare il logging. Il valore predefinito è 1.0.
  • --logging-optional consente di specificare i campi facoltativi da includere nei log:

    • INCLUDE_ALL_OPTIONAL per includere tutti i campi facoltativi.

    • EXCLUDE_ALL_OPTIONAL (valore predefinito) per escludere tutti i campi facoltativi.

    • CUSTOM per includere un elenco personalizzato di campi facoltativi specificati in OPTIONAL_FIELDS.

  • --logging-optional-fields consente di specificare un elenco separato da virgole di campi facoltativi da includere nei log.

    Ad esempio, tls.protocol,tls.cipher può essere impostato solo se LOGGING_OPTIONAL_MODE è impostato su CUSTOM.

Attivazione del logging su un servizio di backend esistente

Console

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul nome del bilanciatore del carico.

  3. Fai clic su Modifica.

  4. Fai clic su Configurazione backend.

  5. Fai clic su Modifica accanto al servizio di backend.

  6. Nella sezione Logging, seleziona la casella di controllo Attiva il logging.

  7. Imposta la probabilità di campionamento nel campo Frequenza di campionamento. Puoi impostare un numero compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Il valore predefinito è 1.0.

  8. (Facoltativo) Per includere tutti i campi facoltativi nei log, nella sezione Campi facoltativi, fai clic su Includi tutti i campi facoltativi.

  9. Per completare la modifica del servizio di backend, fai clic su Aggiorna.

  10. Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.

gcloud: modalità regionale

Abilita il logging su un servizio di backend esistente con il comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

dove

  • --region indica che il servizio di backend è regionale. Utilizza questo campo per i servizi di backend utilizzati con bilanciatori del carico delle applicazioni esterni regionali.
  • --enable-logging abilita il logging per il servizio di backend.
  • --logging-sample-rate ti consente di specificare un valore compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Ha significato solo con il parametro --enable-logging. Attivare il logging, ma impostare la frequenza di campionamento su 0.0 equivale a disattivare il logging. Il valore predefinito è 1.0.
  • --logging-optional consente di specificare i campi facoltativi da includere nei log.

    • INCLUDE_ALL_OPTIONAL per includere tutti i campi facoltativi.

    • EXCLUDE_ALL_OPTIONAL (valore predefinito) per escludere tutti i campi facoltativi.

    • CUSTOM per includere un elenco personalizzato di campi facoltativi specificati in OPTIONAL_FIELDS.

  • --logging-optional-fields ti consente di specificare un elenco separato da virgole di campi facoltativi da includere nei log.

    Ad esempio, tls.protocol,tls.cipher. Può essere impostato solo se LOGGING_OPTIONAL_MODE è impostato su CUSTOM.

Disattivare o modificare il logging su un servizio di backend esistente

Console

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul nome del bilanciatore del carico.

  3. Fai clic su Modifica.

  4. Fai clic su Configurazione backend.

  5. Fai clic su Modifica accanto al servizio di backend.

  6. Per disattivare completamente il logging, nella sezione Logging, deseleziona la casella di controllo Abilita il logging.

  7. Se lasci abilitato il logging, puoi impostare una frazione di frequenza di campionamento diversa. Puoi impostare un numero compreso tra 0.0 e 1.0, dove 0.0 indica che nessuna richiesta viene registrata e 1.0 indica che il 100% delle richieste viene registrato. Il valore predefinito è 1.0. Ad esempio, 0.2 significa che il 20% delle richieste campionate genera log.

  8. Per completare la modifica del servizio di backend, fai clic su Aggiorna.

  9. Per completare la modifica del bilanciatore del carico, fai clic su Aggiorna.

gcloud: modalità regionale

Disattiva il logging su un servizio di backend con il comando gcloud compute backend-services update.

Disattivare completamente il logging

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --no-enable-logging

dove

  • --region indica che il servizio di backend è regionale. Utilizza questo campo per i servizi di backend utilizzati con bilanciatori del carico delle applicazioni esterni regionali.
  • --no-enable-logging disattiva il logging per il servizio di backend.

Modificare la frequenza di campionamento del logging

gcloud compute backend-services update BACKEND_SERVICE \
 --global | --region=REGION \
 --logging-sample-rate=VALUE

Visualizza i log

I log HTTP(S) vengono indicizzati prima da una regola di inoltro, poi da una mappa URL.

Per visualizzare i log, vai alla pagina Esplora log:

Vai a Esplora log

  • Per visualizzare tutti i log, nel menu del filtro Risorsa, seleziona Bilanciatore del carico HTTP Cloud > Tutte le regole di inoltro.

  • Per visualizzare i log di una regola di forwarding, seleziona il nome di una singola regola di forwarding.

  • Per visualizzare i log di una mappa URL, seleziona una regola di forwarding 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 viene applicata ai campi di log. I caratteri non UTF-8 vengono sostituiti con punti di domanda. Per i bilanciatori del carico delle applicazioni esterni regionali,puoi esportare metriche basate sui log utilizzando i log delle risorse (resource.type="http_external_regional_lb_rule").

Che cosa viene registrato nei log

Le voci di log del bilanciatore del carico delle applicazioni esterno contengono informazioni utili per monitorare ed eseguire il debug del traffico HTTP(S). I record dei log contengono campi obbligatori, che sono i campi predefiniti di ogni record del log. I record dei log contengono campi facoltativi che aggiungono ulteriori informazioni sul traffico HTTP(S). Possono essere omessi per risparmiare sui costi di archiviazione.

Alcuni campi di log sono in un formato multicampo, con più di un dato in un determinato campo. Ad esempio, il campo tls è nel formato TlsDetails, che contiene il protocollo TLS e la crittografia TLS in un unico campo. Questi campi multicampo sono descritti nella seguente tabella del formato dei record.

Campo Formato del campo Tipo di campo: obbligatorio o facoltativo Descrizione
severity
insertID
timestamp
logName
LogEntry Obbligatorio I campi generali descritti in una voce di log.
httpRequest HttpRequest Obbligatorio Un protocollo comune per la registrazione delle richieste HTTP.
resource MonitoredResource Obbligatorio

MonitoredResource è il tipo di risorsa associata a una voce di log.

MonitoredResourceDescriptor descrive lo schema di un oggetto MonitoredResource utilizzando un nome di tipo e un insieme di etichette. Per ulteriori informazioni, consulta Etichette delle risorse.

jsonPayload Oggetto (formato Struct) Obbligatorio Il payload della voce di log espresso come oggetto JSON. L'oggetto JSON contiene i seguenti campi:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
string Obbligatorio

Il campo proxyStatus contiene una stringa che specifica il motivo per cui il bilanciatore del carico delle applicazioni esterno regionale ha restituito HttpRequest.status.

Il campo non viene registrato se il valore è una stringa vuota. Questo può accadere se il proxy o il backend non restituisce un errore o se il codice di errore non è 0, 4XX o 5XX.

Il campo proxyStatus è composto da due parti:

TlsDetails Facoltativo Il campo tls contiene il valore TlsDetails che specifica i metadati TLS per la connessione tra il client e il bilanciatore del carico delle applicazioni esterno regionale. Questo campo è disponibile solo se il client utilizza la crittografia TLS/SSL.
MtlsDetails Facoltativo Il campo mtls contiene il valore MtlsDetails che specifica i metadati mTLS per la connessione tra il client e l'Application Load Balancer esterno regionale. Questo campo è disponibile solo se il bilanciatore del carico utilizza TLS (mTLS) reciproco per il frontend.

Formato del campo TlsDetails

Campo Formato del campo Tipo di campo: obbligatorio o facoltativo Descrizione
protocollo string Facoltativo Protocollo TLS utilizzato dai client per stabilire una connessione con il bilanciatore del carico. I valori possibili sono TLS 1.0, 1.1, 1.2, 1.3 o QUIC. Questo valore viene impostato su NULL se il client non utilizza la crittografia TLS/SSL.
cifra string Facoltativo Algoritmo di crittografia TLS utilizzato dai client per stabilire una connessione con il bilanciatore del carico. Questo valore viene impostato su NULL se il client non utilizza HTTP(S) o la crittografia TLS/SSL.

Formato del campo MtlsDetails

Campo Formato del campo Tipo di campo: obbligatorio o facoltativo Descrizione
clientCertPresent bool Facoltativo

true se il client ha fornito un certificato durante l'handshake TLS; altrimenti, false.

clientCertChainVerified bool Facoltativo

true se la catena di certificati client viene verificata in base a un TrustStore configurato; in caso contrario, false.

clientCertError string Facoltativo

Stringhe predefinite che rappresentano le condizioni di errore. Per ulteriori informazioni sulle stringhe di errore, consulta le modalità di convalida del client mTLS.

clientCertSha256Fingerprint string Facoltativo

Impronta SHA-256 con codifica Base64 del certificato client.

clientCertSerialNumber string Facoltativo

Il numero di serie del certificato client. Se il numero di serie è più lungo di 50 byte, la stringa client_cert_serial_number_exceeded_size_limit viene aggiunta a client_cert_error e il numero di serie viene impostato su una stringa vuota.

clientCertValidStartTime string Facoltativo

Timestamp (nel formato di stringa per la data RFC 3339) prima del quale il certificato client non è valido. Ad esempio, 2022-07-01T18:05:09+00:00.

clientCertValidEndTime string Facoltativo

Timestamp (nel formato di stringa per la data RFC 3339) dopo il quale il certificato client non è valido. Ad esempio, 2022-07-01T18:05:09+00:00.

clientCertSpiffeId string Facoltativo

Il ID SPIFFE dal campo Nome alternativo dell'oggetto (SAN). Se il valore non è valido o supera i 2048 byte, l'ID SPIFFE viene impostato su una stringa vuota.

Se l'ID SPIFFE è più lungo di 2048 byte, la stringa client_cert_spiffe_id_exceeded_size_limit viene aggiunta a client_cert_error.

clientCertUriSans string Facoltativo

Elenco separato da virgole e codificato in base64 delle estensioni SAN di tipo URI. Le estensioni SAN vengono estratte dal certificato client. L'ID SPIFFE non è incluso nel campo client_cert_uri_sans.

Se il campo client_cert_uri_sans è più lungo di 512 byte, la stringa client_cert_uri_sans_exceeded_size_limit viene aggiunta a client_cert_error e l'elenco separato da virgole viene impostato su una stringa vuota.

clientCertDnsnameSans string Facoltativo

Elenco codificato in Base64 delle estensioni SAN di tipo DNSName separate da virgole. Le estensioni SAN vengono estratte dal certificato client.

Se il campo client_cert_dnsname_sans è più lungo di 512 byte, la stringa client_cert_dnsname_sans_exceeded_size_limit viene aggiunta a client_cert_error e l'elenco separato da virgole viene impostato su una stringa vuota.

clientCertIssuerDn string Facoltativo

Campo Emittente completo con codifica Base64 del certificato.

Se il campo client_cert_issuer_dn è più lungo di 512 byte, la stringa client_cert_issuer_dn_exceeded_size_limit viene aggiunta a client_cert_error e client_cert_issuer_dn viene impostato su una stringa vuota.

clientCertSubjectDn string Facoltativo

Campo Oggetto completo del certificato con codifica Base64.

Se il campo client_cert_subject_dn è più lungo di 512 byte, la stringa client_cert_subject_dn_exceeded_size_limit viene aggiunta a client_cert_error e client_cert_subject_dn viene impostato su una stringa vuota.

clientCertLeaf string Facoltativo

Il certificato client finale per una connessione mTLS stabilita in cui il certificato ha superato la convalida. La codifica del certificato è conforme a RFC 9440: il certificato DER binario è codificato utilizzando Base64 (senza interruzioni di riga, spazi o altri caratteri esterni all'alfabeto Base64) e delimitato con due due punti.

Se client_cert_leaf supera i 16 KB non codificati, la stringa client_cert_validated_leaf_exceeded_size_limit viene aggiunta a client_cert_error e client_cert_leaf viene impostato su una stringa vuota.

clientCertChain string Facoltativo

L'elenco di certificati delimitati da virgole, nell'ordine TLS standard, della catena di certificati client per una connessione mTLS stabilita in cui il certificato client ha superato la convalida, escluso il certificato finale. La codifica del certificato è conforme a RFC 9440.

Se le dimensioni combinate di client_cert_leaf e client_cert_chain prima della codifica Base64 superano i 16 KB, la stringa client_cert_validated_chain_exceeded_size_limit viene aggiunta a client_cert_error e client_cert_chain viene impostata su una stringa vuota.

Etichette risorse

La tabella seguente elenca le etichette delle risorse per resource.type="http_external_regional_lb_rule".

Campo Tipo Descrizione
backend_name string Il nome del gruppo di istanze o del NEG di backend. Tuttavia, l'etichetta è vuota per una connessione TLS non riuscita.
backend_scope string L'ambito del backend (un nome di zona o di regione). Potrebbe essere UNKNOWN quando backend_name è sconosciuto.
backend_scope_type string L'ambito del backend (REGION/ZONE). Può essere UNKNOWN se backend_name è sconosciuto.
backend_target_name string Il nome del backend selezionato per gestire la richiesta, in base alla regola del percorso mappa o della regola del percorso dell'URL corrispondente alla richiesta.
backend_target_type string Il tipo di destinazione di backend. Può essere BACKEND_SERVICE oppure viene restituito UNKNOWN se il backend non è stato assegnato.
backend_type string Il tipo di gruppo di backend. Può essere INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP o UNKNOWN viene restituito se il backend non è stato assegnato.
forwarding_rule_name string Il nome dell'oggetto regola di forwarding.
matched_url_path_rule string La regola del percorso o della route della mappa URL configurata come parte della chiave della mappa URL. Può essere UNMATCHED o UNKNOWN come valori di riserva.
  • UNMATCHED si riferisce a una richiesta che non corrisponde a nessuna regola del percorso dell'URL, pertanto viene utilizzata la regola del percorso predefinita.
  • UNKNOWN indica un errore interno o una connessione TLS non riuscita.
network_name string Il nome della rete VPC del bilanciatore del carico.
project_id string L'identificatore del progetto Google Cloud associato a questa risorsa.
region string La regione in cui è definito il bilanciatore del carico.
target_proxy_name string Il nome dell'oggetto proxy target 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. È vuoto per una connessione TLS non riuscita.

Campo di errore proxyStatus

Il campo proxyStatus contiene una stringa che specifica il motivo per cui il bilanciatore del carico ha restituito un errore. Il campo proxyStatus è composto da due parti: proxyStatus error e proxyStatus details. Questa sezione descrive le stringhe supportate nel campo proxyStatus error.

Il campo proxyStatus error è applicabile ai seguenti bilanciatori del carico:

  • Bilanciatore del carico delle applicazioni esterno regionale
  • Bilanciatore del carico delle applicazioni interno tra regioni
  • Bilanciatore del carico delle applicazioni interno regionale
errore proxyStatus Descrizione Codici di risposta comuni associati
destination_unavailable Il bilanciatore del carico considera il backend non disponibile. Ad esempio, tentativi recenti di comunicazione con il backend non sono andati a buon fine o un controllo di integrità potrebbe aver avuto esito negativo. 500, 503
connection_timeout Il tentativo del bilanciatore del carico di aprire una connessione al backend è scaduto. 504
connection_terminated

La connessione del bilanciatore del carico al backend è terminata prima che venisse ricevuta una risposta completa.

Questo proxyStatus error viene restituito in uno dei seguenti scenari:

  • La connessione del bilanciatore del carico al backend è terminata prima di ricevere una risposta completa.
  • La connessione TLS non è riuscita durante l'handshake SSL e il client non ha stabilito una connessione con il bilanciatore del carico.

0, 502, 503
connection_refused La connessione del bilanciatore del carico al backend viene rifiutata. 502, 503
connection_limit_reached

Il bilanciatore del carico è configurato per limitare il numero di connessioni al backend e questo limite è stato superato.

Questo proxyStatus error viene restituito in uno dei seguenti scenari:

  • Se un backend è in modalità di manutenzione, il traffico non può essere indirizzato al backend.
  • Se la richiesta è limitata a livello locale.
  • Envoy gestisce condizioni di errore come l'esaurimento della memoria.
502, 503
destination_not_found Il bilanciatore del carico non è in grado di determinare il backend appropriato da utilizzare per questa richiesta. Ad esempio, il backend potrebbe non essere configurato. 500, 404
dns_error Il bilanciatore del carico ha riscontrato un errore DNS durante il tentativo di trovare un indirizzo IP per il nome host di backend. 502, 503
proxy_configuration_error Il bilanciatore del carico ha riscontrato un errore di configurazione interno. 500
proxy_internal_error Il bilanciatore del carico ha riscontrato un errore interno. 0, 500, 502
proxy_internal_response Il bilanciatore del carico ha generato la risposta senza tentare di connettersi al backend. Qualsiasi codice di risposta a seconda del tipo di problema. Ad esempio, il codice di risposta 410 indica che il backend non è disponibile a causa di insolvenza nei pagamenti.
http_response_timeout Il bilanciatore del carico ha raggiunto un limite di timeout del servizio di backend configurato mentre attendeva la risposta completa del backend. 504, 408
http_request_error Il bilanciatore del carico ha rilevato un errore HTTP 4xx, che indica problemi con la richiesta del client. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 o 429
http_protocol_error Il bilanciatore del carico ha riscontrato un errore del protocollo HTTP durante la comunicazione con il backend. 502
tls_protocol_error Il bilanciatore del carico ha rilevato un errore TLS durante l'handshake TLS. 0
tls_certificate_error Il bilanciatore del carico ha riscontrato un errore durante la verifica del certificato presentato dal server o dal client quando mTLS è abilitato. 0
tls_alert_received Il bilanciatore del carico ha rilevato un avviso TLS fatale durante l'handshake TLS. 0

Campo dettagli proxyStatus

Il campo proxyStatus contiene una stringa che specifica il motivo per cui il bilanciatore del carico ha restituito un errore. Il campo proxyStatus è composto da due parti: proxyStatus error e proxyStatus details. Il campo proxyStatus details è facoltativo e viene visualizzato solo se sono disponibili informazioni aggiuntive. Questa sezione descrive le stringhe supportate nel campo proxyStatus details.

Il campo proxyStatus details è applicabile ai seguenti bilanciatori del carico:

  • Bilanciatore del carico delle applicazioni esterno regionale
  • Bilanciatore del carico delle applicazioni interno regionale
  • Bilanciatore del carico delle applicazioni interno tra regioni
Dettagli di proxyStatus Descrizione Codici di risposta comuni associati
client_disconnected_before_any_response La connessione al client è stata interrotta prima che il bilanciatore del carico inviasse una risposta. 0
backend_connection_closed Il backend ha chiuso in modo imprevisto la connessione al bilanciatore del carico. Questo può accadere se il bilanciatore del carico invia traffico a un'altra entità, come un'applicazione di terze parti con un timeout TCP inferiore al timeout di 10 minuti (600 secondi) del bilanciatore del carico. 502
failed_to_connect_to_backend Il bilanciatore del carico non è riuscito a connettersi al backend. Questo errore include i timeout durante la fase di connessione. 503
failed_to_pick_backend Il bilanciatore del carico non è riuscito a scegliere un backend funzionante per gestire la richiesta. 502
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.
client_timed_out

La connessione tra il bilanciatore del carico e il client ha superato il timeout di inattività.

Per ulteriori informazioni sul bilanciatore del carico delle applicazioni esterno regionale, consulta Timeout keepalive HTTP del client. Per ulteriori informazioni sul bilanciatore del carico delle applicazioni interno, consulta Timeout keepalive HTTP del client.
0, 408
backend_timeout

Il backend ha superato il tempo di attesa durante la generazione di una risposta.

502
http_protocol_error_from_backend_response La risposta del backend contiene un errore del protocollo HTTP. 501, 502
http_protocol_error_from_request La richiesta del client contiene un errore del protocollo HTTP. 400, 503
http_version_not_supported La versione del protocollo HTTP non è supportata. Sono supportati solo HTTP 0.9, 1.0, 1.1 e 2.0. 400
handled_by_identity_aware_proxy Questa risposta è stata generata da Identity-Aware Proxy (IAP) durante la verifica dell'identità del client prima di consentire l'accesso. 200, 302, 400, 401, 403, 500, 502
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, i nomi dei campi di intestazione che includono virgolette doppie (") o qualsiasi carattere esterno all'intervallo ASCII standard (ovvero qualsiasi byte >= 0x80) non sono validi.

Per ulteriori informazioni, vedi:

400, 404
ip_detection_failed Non è stato possibile rilevare l'indirizzo IP originale. Qualsiasi codice di risposta possibile a seconda della natura dell'errore. Il valore deve essere compreso tra 400 e 599.
request_body_too_large Il corpo della richiesta HTTP ha superato la lunghezza massima supportata dal bilanciatore del carico. 413.507
request_header_timeout L'intestazione della richiesta ha superato il tempo di attesa perché il bilanciatore del carico non ha ricevuto la richiesta completa entro 5 secondi. 408, 504
denied_by_security_policy Il bilanciatore del carico ha negato questa richiesta a causa di un criterio di sicurezza Google Cloud Armor. 403
throttled_by_security_policy La richiesta è stata bloccata da una regola di throttling di Google Cloud Armor. 429
client_cert_chain_invalid_eku Il certificato client o il suo emittente non ha un utilizzo esteso della chiave che includa clientAuth. 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 10 vincoli relativi ai nomi. Per ulteriori informazioni, consulta Errori registrati per le connessioni chiuse. 0
client_cert_invalid_rsa_key_size Un certificato intermedio o finale del client aveva una dimensione della chiave RSA non valida. Per ulteriori informazioni, vedi Errori registrati per le 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 le connessioni chiuse. 0
client_cert_pki_too_large La PKI da utilizzare per la convalida ha più di tre certificati intermedi che condividono gli stessi Subject e Subject Public Key Info. Per ulteriori informazioni, consulta 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 le connessioni chiuse. 0
client_cert_unsupported_key_algorithm Un certificato client o intermedio utilizza un algoritmo non RSA o non ECDSA. Per ulteriori informazioni, vedi Errori registrati per le connessioni chiuse. 0
client_cert_validation_failed La convalida del certificato client non va a buon fine con TrustConfig. Per ulteriori informazioni, consulta Errori registrati per le connessioni chiuse. 0
client_cert_validation_not_performed Hai configurato TLS reciproco senza configurare un TrustConfig. Per ulteriori informazioni, vedi Errori registrati per le connessioni chiuse. 0
client_cert_validation_search_limit_exceeded Il limite di profondità o di iterazione viene raggiunto durante il tentativo di convalidare la catena di certificati. Per ulteriori informazioni, vedi Errori registrati per le connessioni chiuse. 0
client_cert_validation_timed_out Il limite di tempo (200 ms) è stato superato durante la convalida della catena di certificati. Per ulteriori informazioni, vedi Errori registrati per le connessioni chiuse. 0
tls_version_not_supported La versione del protocollo TLS è riconosciuta, ma non supportata. L'errore comporta una connessione TLS chiusa. 0
unknown_psk_identity I server inviano questo errore quando è richiesta l'istituzione della chiave PSK, ma il client non fornisce un'identità PSK accettabile. L'errore comporta una connessione TLS chiusa. 0
no_application_protocol Inviata dai server quando un'estensione"application_layer_protocol_negotiation" del client pubblicizza solo i protocolli non supportati dal server. Vedi Estensione per la negoziazione del protocollo TLS a livello di applicazione. L'errore comporta una connessione TLS chiusa. 0
no_certificate Nessun certificato trovato. L'errore comporta una connessione TLS chiusa. 0
bad_certificate Un certificato non è valido o contiene firme che non è stato possibile verificare. L'errore comporta una connessione TLS chiusa. 0
unsupported_certificate Un certificato è di un tipo non supportato. L'errore comporta una connessione TLS chiusa. 0
certificate_revoked Un certificato è stato revocato dal firmatario. L'errore comporta una connessione TLS chiusa. 0
certificate_expired Un certificato è scaduto o non è valido. L'errore comporta una chiusura della connessione TLS. 0
certificate_unknown Si sono verificati alcuni problemi non specificati durante l'elaborazione del certificato, che lo rendono inaccettabile. L'errore comporta una connessione TLS chiusa. 0
unknown_ca È stata ricevuta una catena di certificati o una catena parziale valida, ma il certificato non è stato accettato perché non è stato possibile individuare il certificato CA o associarlo a un'ancora di attendibilità nota. L'errore comporta una connessione TLS chiusa. 0
unexpected_message È stato ricevuto un messaggio inappropriato, ad esempio un messaggio di handshake errato o dati dell'applicazione prematuri. L'errore comporta una connessione TLS chiusa. 0
bad_record_mac Viene ricevuto un record che non può essere deprotetto. L'errore comporta una connessione TLS chiusa. 0
record_overflow È stato ricevuto un record TLSCiphertext di lunghezza superiore a 214+256 byte o un record è stato decriptato in un record TLSPlaintext con più di 214 byte (o un altro limite concordato). L'errore comporta una connessione TLS chiusa. 0
handshake_failure Impossibile negoziare un insieme accettabile di parametri di sicurezza in base alle opzioni disponibili. L'errore comporta una connessione TLS chiusa. 0
illegal_parameter Un campo nell'handshake non era corretto o non era coerente con gli altri campi. L'errore comporta una connessione TLS chiusa. 0
access_denied È stato ricevuto un certificato o un PSK valido, ma quando è stato applicato controllo dell'accesso, il client non ha proceduto con la negoziazione. L'errore comporta una connessione TLS chiusa. 0
decode_error Non è stato possibile decodificare un messaggio perché alcuni campi non rientravano nell'intervallo specificato o la lunghezza del messaggio non era corretta. L'errore comporta una connessione TLS chiusa. 0
decrypt_error Un'operazione di crittografia di handshake (non a livello di record) non è riuscita, ad esempio non è stato possibile verificare correttamente una firma o convalidare un messaggio completato o un binder PSK. L'errore comporta una connessione TLS chiusa. 0
insufficient_security Una negoziazione non è riuscita in particolare perché il server richiede parametri più sicuri di quelli supportati dal client. L'errore comporta una connessione TLS chiusa. 0
inappropriate_fallback Inviata da un server in risposta a un tentativo di ripetizione della connessione non valido da parte di un client. L'errore comporta una connessione TLS chiusa. 0
user_cancelled L'utente annulla l'handshake per un motivo non correlato a un errore del protocollo. L'errore comporta una connessione TLS chiusa. 0
missing_extension Inviati da endpoint che ricevono un messaggio di handshake che non contiene un'estensione obbligatoria da inviare per la versione TLS offerta o altri parametri negoziati. L'errore comporta una connessione TLS chiusa. 0
unsupported_extension Inviati da endpoint che ricevono un messaggio di handshake contenente un'estensione nota per essere vietata per l'inclusione nel messaggio di handshake in questione oppure che includono eventuali estensioni in ServerHello o Certificate che non sono state offerte per la prima volta in corrispondente ClientHello o CertificateRequest. L'errore comporta una connessione TLS chiusa. 0
unrecognized_name Inviata dai server quando non esiste alcun server che possa essere identificato dal nome fornito dal cliente tramite l'estensione "server_name". Consulta le definizioni delle estensioni TLS. 0
bad_certificate_status_response Inviata dai client quando il server fornisce una risposta OCSP non valida o non accettabile tramite l'estensione "status_request". Consulta le definizioni delle estensioni TLS. L'errore comporta una connessione TLS chiusa. 0
load_balancer_configured_resource_limits_reached Il bilanciatore del carico ha raggiunto i limiti di risorse configurati, ad esempio il numero massimo di connessioni. 400, 500, 503

Voci del log delle connessioni TLS non riuscite

Quando la connessione TLS tra il client e il bilanciatore del carico non va a buon fine prima che sia selezionato un backend, le voci di log registrano gli errori. Puoi configurare i servizi di backend con frequenze di campionamento dei log diverse. Quando una connessione TLS non va a buon fine, la frequenza di campionamento dei log delle connessioni TLS non riuscite è la più alta per qualsiasi servizio di backend. Ad esempio, se hai configurato due servizi di backend con frequenza di campionamento dei log pari a 0.3 e 0.5, la frequenza di campionamento dei log delle connessioni TLS non riuscite è 0.5.

Puoi identificare le connessioni TLS non riuscite controllando i seguenti dettagli della voce di log:

  • Il tipo di errore proxyStatus è tls_alert_received, tls_certificate_error, tls_protocol_error o connection_terminated.
  • Non sono presenti informazioni sul backend.

L'esempio seguente mostra una voce di log TLS non riuscita con il proxyStatus error campo:

   json_payload:    {
   @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
   proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure""
   log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name"
   }
   http_request {
    latency {
      nanos: 12412000
    }
    protocol: "HTTP/1.0"
    remote_ip: "127.0.0.2"
   }
  resource {
    type: "mock_internal_http_lb_rule"
    labels {
      backend_name: ""
      backend_scope: ""
      backend_scope_type: "UNKNOWN"
      backend_target_name: ""
      backend_target_type: "UNKNOWN"
      backend_type: "UNKNOWN"
      forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev"
      matched_url_path_rule: "UNKNOWN"
      network_name: "lb-network"
      region: "REGION"
      target_proxy_name: "l7-ilb-https-proxy-dev"
      url_map_name: ""
    }
  }
  timestamp: "2023-08-15T16:49:30.850785Z"
  

Log delle richieste dei criteri di autorizzazione

L'oggetto authz_info nel payload JSON della voce del 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:
  • Nessun criterio ALLOW corrisponde alla richiesta, che viene rifiutata.
  • Nessun criterio DENY corrisponde alla richiesta, che è consentita.
authz_info.policies[].result enum Il risultato può essere ALLOWED o DENIED.
authz_info.policies[].details string I dettagli includono quanto segue:
  • allowed_as_no_deny_policies_matched_request
  • denied_as_no_allow_policies_matched_request
  • denied_by_authz_extension
  • denied_by_cloud_iap
authz_info.overall_result enum Il risultato può essere ALLOWED o DENIED.

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
  • Migliorare 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 l'API Cloud Monitoring.

Definizione dei criteri di avviso

Puoi creare criteri di avviso per monitorare i valori delle metriche e ricevere notifiche quando queste violano una condizione.

  1. Nella console Google Cloud, vai alla pagina  Avvisi:

    Vai ad Avvisi

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Se non hai creato i canali di notifica e vuoi ricevere notifiche, fai clic su Modifica canali di notifica e aggiungi i canali di notifica. Torna alla pagina Avvisi dopo aver aggiunto i tuoi canali.
  3. Nella pagina Avvisi, seleziona Crea criterio.
  4. Per selezionare la metrica, espandi il menu Seleziona una metrica e poi procedi nel seguente modo:
    1. Per limitare il menu alle voci pertinenti, inserisci Regional External Application Load Balancer Rule nella barra dei filtri. Se non vengono visualizzati risultati dopo aver filtrato il menu, disattiva l'opzione Mostra solo risorse e metriche attive.
    2. Per Tipo di risorsa, seleziona Regola del bilanciatore del carico delle applicazioni esterno regionale.
    3. Seleziona una Categoria di metriche e una Metrica, quindi seleziona Applica.
  5. Fai clic su Avanti.
  6. 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.
  7. Fai clic su Avanti.
  8. (Facoltativo) Per aggiungere notifiche al tuo 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.
  9. (Facoltativo) Aggiorna la Durata chiusura automatica incidenti. Questo campo determina quando Monitoring chiude gli incidenti in assenza di dati delle metriche.
  10. (Facoltativo) Fai clic su Documentazione e aggiungi tutte le informazioni che vuoi includere in un messaggio di notifica.
  11. Fai clic su Nome avviso e inserisci un nome per il criterio di avviso.
  12. Fai clic su Crea criterio.
Per ulteriori informazioni, consulta Criteri di avviso.

Definire le dashboard personalizzate di Cloud Monitoring

Puoi creare dashboard di Cloud Monitoring personalizzate per le metriche del bilanciatore del carico:

  1. Nella console Google Cloud, vai alla pagina Monitoring.

    Vai a Monitoring

  2. Seleziona Dashboard > Crea dashboard.

  3. Fai clic su Aggiungi grafico e poi assegna un titolo al grafico.

  4. Per identificare la serie temporale da visualizzare, scegli un tipo di risorsa e un tipo di metrica:

    1. Nella sezione Risorsa e metrica, fai clic sul grafico e poi, nella sezione Seleziona una metrica, scegli tra le opzioni disponibili:
    2. Per un bilanciatore del carico delle applicazioni esterno regionale, seleziona il tipo di risorsa Regola del bilanciatore del carico delle applicazioni esterno regionale.
    3. Fai clic su Applica.
  5. Per specificare i filtri di monitoraggio, fai clic su Filtri > Aggiungi filtro.

  6. Fai clic su Salva.

Frequenza e conservazione dei report sulle metriche

Le metriche per i bilanciatori del carico delle applicazioni esterni vengono esportate in Cloud Monitoring in 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 da 6 W a 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 regionali vengono registrate in Cloud Monitoring. A queste metriche viene anteposto loadbalancing.googleapis.com/.

Metrica Nome Descrizione
Conteggio delle richieste https/external/regional/request_count Il numero di richieste gestite dal bilanciatore del carico delle applicazioni esterno regionale.
Conteggio byte richiesta https/external/regional/request_bytes Il numero di byte inviati come richieste dai client al bilanciatore del carico delle applicazioni esterno regionale.
Conteggio byte risposta https/external/regional/response_bytes Il numero di byte inviati come risposte dal bilanciatore del carico delle applicazioni esterno regionale al client.
Latenze totali https/external/regional/total_latencies Una distribuzione della latenza in millisecondi. La latenza viene misurata dal momento in cui il proxy riceve il primo byte della richiesta al momento in cui il proxy invia l'ultimo byte della risposta.
Latenze del backend https/external/regional/backend_latencies Una distribuzione della latenza in millisecondi. La latenza viene misurata dal momento in cui il proxy invia il primo byte della richiesta al backend fino al momento in cui il proxy riceve l'ultimo byte della risposta dal backend.

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 esterno regionale. Puoi filtrare le metriche aggregate utilizzando le seguenti dimensioni per resource.type="http_external_regional_lb_rule".

Proprietà Descrizione
backend_name Il nome del gruppo di istanze o del NEG di backend.
backend_scope L'ambito del backend (un nome di zona o di regione). Potrebbe essere UNKNOWN quando backend_name è sconosciuto.
backend_scope_type L'ambito del backend (REGION/ZONE). Può essere UNKNOWN se backend_name è sconosciuto.
backend_target_name Il nome del backend selezionato per gestire la richiesta, in base alla regola del percorso mappa o della regola del percorso dell'URL corrispondente alla richiesta.
backend_target_type Il tipo di destinazione di backend. Può essere BACKEND_SERVICE oppure viene restituito UNKNOWN se il backend non è stato assegnato.
backend_type Il tipo di gruppo di backend. Può essere INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP o UNKNOWN viene restituito se il backend non è stato assegnato.
forwarding_rule_name Il nome dell'oggetto regola di forwarding.
matched_url_path_rule La regola del percorso o della route della mappa URL configurata come parte della chiave della mappa URL. Può essere UNMATCHED o UNKNOWN come valori di riserva.
  • UNMATCHED si riferisce a una richiesta che non corrisponde a nessuna regola del percorso dell'URL, pertanto viene utilizzata la regola del percorso predefinita.
  • UNKNOWN indica un errore interno.
network_name Il nome della rete VPC del bilanciatore del carico.
project_id L'identificatore del progetto Google Cloud associato a questa risorsa.
region La regione in cui è definito il bilanciatore del carico.
target_proxy_name Il nome dell'oggetto proxy target a cui fa riferimento la regola di forwarding.
url_map_name Il nome dell'oggetto mappa URL configurato per selezionare un servizio di backend.

Passaggi successivi