Logging e monitoraggio del bilanciatore del carico delle applicazioni interno

Il presente documento fornisce le informazioni necessarie per comprendere le metriche di logging e monitoraggio Application Load Balancer interni. Le funzionalità di logging e monitoraggio sia per i bilanciatori del carico delle applicazioni interni regionali che per i bilanciatori del carico delle applicazioni interni tra regioni sono in modo analogo.

Logging

Puoi abilitare il logging in base al servizio di backend. Un singolo la mappa URL del bilanciatore del carico delle applicazioni interno può fare riferimento a più di un servizio di backend. Tu potrebbe essere necessario abilitare il logging per più servizi di backend, a seconda la tua configurazione.

Campionamento e raccolta dei log

Google Cloud campiona i pacchetti che escono ed entrano nel backend del bilanciatore del carico di macchine virtuali (VM). Questi pacchetti campionati vengono elaborati per generare i log.

Non tutti i pacchetti sono campionati. Google Cloud campiona un sottoinsieme di variabili a seconda della quantità di traffico sull'host fisico. La frequenza di campionamento più bassa possibile è di uno su 1024 pacchetti. Frequenza di campionamento è controllato in modo dinamico da Google Cloud. Non puoi modificare il campionamento di conversione.

Il campionamento dei pacchetti interagisce con le regole firewall nei seguenti modi:

  • I pacchetti vengono campionati prima di applicare le regole firewall in uscita.
  • I pacchetti vengono campionati dopo l'applicazione delle regole firewall in entrata.

Dopo il campionamento, Google Cloud elabora i pacchetti campionati in base alla seguente procedura:

  1. Aggregazione:i pacchetti campionati vengono aggregati in un intervallo di 5 secondi. per produrre una singola voce di flusso.

  2. Campionamento dei log configurabile (secondario): si tratta di un secondo campionamento di processo, campionando i flussi. Puoi controllare la frazione delle voci del flusso emesse come voci di log in base logConfig.sampleRate . Quando logConfig.sampleRate è 1.0 (100%), significa che tutte le e pacchetti campionati.

  3. Scrivi nel logging: le voci di log vengono scritte in Cloud Logging.

Campi facoltativi

I record di log contengono campi obbligatori e facoltativi. La Cosa viene registrato elenca i campi facoltativi e quelli obbligatori. Tutti gli elementi obbligatori sono sempre inclusi. Puoi personalizzare i campi facoltativi da conservare.

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

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

  • Se selezioni personalizzato, puoi specificare i campi facoltativi da includere, ad esempio tls.protocol,tls.cipher.

Per istruzioni su come personalizzare i campi facoltativi, consulta: Abilitare il logging su un servizio di backend esistente.

Abilitazione del logging su un servizio di backend esistente

Per i bilanciatori del carico delle applicazioni interni regionali, segui questi passaggi:

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 tuo servizio di backend.

  6. Fai clic su Configurazioni avanzate (affinità sessione, timeout per svuotamento della connessione).

  7. Fai clic su Abilita il logging.

  8. Imposta una frazione della 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 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

Per aggiornare il servizio di backend in modo da abilitare il logging, utilizza il comando gcloud compute backend-services update.

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

dove

  • --enable-logging abilita il logging per il servizio di backend in questione.
  • --logging-sample-rate ti consente di specificare un valore compreso tra 0.0 e 1.0, dove 0.0 significa che non vengono registrate richieste e 1.0 significa che il 100% di vengono registrate nel log. Significativo solo con --enable-logging . È abilitato il logging, ma l'impostazione della frequenza di campionamento su 0.0 è equivale a disabilitare il logging. Il valore predefinito è 1.0.
  • --logging-optional ti consente di specificare i campi facoltativi che includere nei log:

    • INCLUDE_ALL_OPTIONAL per includere tutti i campi facoltativi.

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

    • CUSTOM per includere un elenco personalizzato dei campi facoltativi che hai specificare in OPTIONAL_FIELDS.

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

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

Per i bilanciatori del carico delle applicazioni interni tra regioni, segui questi passaggi:

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 tuo servizio di backend.

  6. Fai clic su Configurazioni avanzate (affinità sessione, timeout per svuotamento della connessione).

  7. Fai clic su Abilita il logging.

  8. Imposta una frazione della 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 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

Per aggiornare il servizio di backend in modo da abilitare il logging, utilizza il comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --enable-logging \
    --logging-sample-rate=RATE \
    --global \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

dove

  • --enable-logging abilita il logging per il servizio di backend in questione.
  • --logging-sample-rate ti consente di specificare un valore compreso tra 0.0 e 1.0, dove 0.0 significa che non vengono registrate richieste e 1.0 significa che il 100% di vengono registrate nel log. Significativo solo con --enable-logging . È abilitato il logging, ma l'impostazione della frequenza di campionamento su 0.0 è equivale a disabilitare il logging. Il valore predefinito è 1.0.
  • --logging-optional ti consente di specificare i campi facoltativi che includere nei log:

    • INCLUDE_ALL_OPTIONAL per includere tutti i campi facoltativi.

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

    • CUSTOM per includere un elenco personalizzato dei campi facoltativi che hai specificare in OPTIONAL_FIELDS.

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

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

Dopo aver abilitato il logging nel servizio di backend, ogni richiesta HTTP(S) viene registrata mediante Cloud Logging.

Come visualizzare i log

Per visualizzare i log, nella console Google Cloud vai alla pagina Esplora log.

I log del bilanciatore del carico delle applicazioni interno vengono indicizzati prima dalla rete e poi in base regione.

  • Per visualizzare i log di tutti i bilanciatori del carico delle applicazioni interni, nel primo menu a discesa seleziona Regola del bilanciatore del carico delle applicazioni interno.
  • Per visualizzare i log di una sola rete, seleziona Regola del bilanciatore del carico delle applicazioni interno, quindi seleziona il nome di un in ogni rete.
  • Per visualizzare i log di una sola regione della rete, seleziona Regola del bilanciatore del carico delle applicazioni interno > NETWORK > REGION.

I campi del log di tipo boolean vengono generalmente visualizzati solo se hanno il valore true. Se un campo booleano ha il valore false, questo campo viene omesso dal log.

Codifica UTF-8 per i campi dei log. I caratteri che non sono caratteri UTF-8 vengono sostituiti con punti interrogativi.

Puoi configurare l'esportazione metriche basate su log per dei log delle risorse (resource.type="internal_http_lb_rule"). Le metriche create si basano sulla "Regola del bilanciatore del carico delle applicazioni interno" risorsa, disponibile nelle dashboard di Cloud Monitoring:

Vai a Monitoring

Che cosa viene registrato

Le voci di log del bilanciatore del carico delle applicazioni interno 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, e campi facoltativi che aggiungono ulteriori informazioni sul traffico HTTP(S). Possono essere omessi per risparmiare sui costi di archiviazione. Le voci di log contengono i seguenti tipi di informazioni:

  • Informazioni generali mostrate nella maggior parte dei log di Google Cloud, come gravità, ID progetto, numero del progetto e timestamp, come descritto in LogEntry.
  • Campi log HttpRequest.

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

Campo Tipo Tipo di campo: obbligatorio o facoltativo Descrizione
logName string Obbligatorio Il nome della risorsa del log in cui la voce di log appartiene.
Nella modulo "projects/PROJECT_ID/logs/requests".
timestamp string Obbligatorio L'ora in cui è iniziata la richiesta.
severity LogSeverity formato Obbligatorio La gravità della voce di log. Il valore predefinito è LogSeverity.DEFAULT.
httpRequest HttpRequest oggetto Obbligatorio Un protocollo HttpRequest che descrive la richiesta HTTP(S) registrata.
trace string Obbligatorio Il nome della risorsa della traccia associata alla voce di log, se qualsiasi. Se contiene un nome risorsa relativo, si presume che il nome sarà relativo a https://tracing.googleapis.com. Esempio: projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824.

I bilanciatori del carico delle applicazioni interni non supportano questo campo.

spanId string Obbligatorio L'ID intervallo all'interno della traccia associata alla voce di log. Per Intervalli di Trace, questa stringa ha lo stesso formato dell'API Trace v2 utilizza: una codifica esadecimale a 16 caratteri per un array da 8 byte, come 000000000000004a.

I bilanciatori del carico delle applicazioni interni non supportano questo campo.

resource Oggetto MonitoredResource Obbligatorio

La risorsa monitorata che ha generato questa voce di log.

La MonitoredResourceDescriptor descrive lo schema di un oggetto MonitoredResource utilizzando un nome del tipo e un insieme di etichette.

Ad esempio, i descrittori risorsa monitorata per i bilanciatori del carico delle applicazioni interni hanno un tipo di risorsa internal_http_lb_rule e utilizza le etichette delle risorse per identificare la risorsa effettiva e i suoi attributi. Per un elenco di sulle etichette delle risorse, consulta la sezione Etichette delle risorse per resource.type="internal_http_lb_rule".

jsonPayload oggetto (formato Struct) Obbligatorio Il payload della voce di log espresso come oggetto JSON. Il file JSON contiene i seguenti campi:
  • tls
  • proxyStatus
  • backendTargetProjectNumber
  • serviceDirectoryService
  • cloudFitExperiment
  • cloudFitFault
  • serviceExtensionInfo
  • mtls
string Obbligatorio

Il campo proxyStatus contiene una stringa che specifica perché il bilanciatore del carico delle applicazioni interno ha restituito HttpRequest.status. Questo campo viene compilato solo quando il proxy restituisce un codice di errore.

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

Il campo proxyStatus è composto da due parti:

string Obbligatorio Il campo backendTargetProjectNumber contiene il progetto numero che identifica il proprietario del servizio di backend o del bucket di backend.
string Obbligatorio Il campo serviceDirectoryService contiene il nome del Servizio Service Directory su cui è stato rilevato l'errore Cloud FIT configurato.
string Obbligatorio Il campo cloudFitExperiment contiene il nome del Esperimento Cloud FIT.
string Obbligatorio Il campo cloudFitFault contiene il nome dell'errore inserito da un esperimento di errore Cloud FIT in questo percorso di richiesta.
ServiceExtensionInfo Obbligatorio Il campo serviceExtensionInfo memorizza informazioni sul Flussi di dati gRPC dal bilanciatore del carico a Service Extensions. Per ulteriori informazioni le informazioni, vedi quello che viene registrato per le estensioni callout.
TlsDetails Facoltativo Il campo tls contiene TlsDetails che specifica i metadati TLS per la connessione tra il client e il bilanciatore del carico delle applicazioni interno. Questo è 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 il bilanciatore del carico delle applicazioni interno. Questo è disponibile solo se il bilanciatore del carico utilizza il frontend TLS reciprocamente (mTLS).

Formato campo TlsDetails

Campo Formato del campo Tipo di campo: obbligatorio o facoltativo Descrizione
protocollo string Facoltativo protocollo TLS che i client utilizzano per stabilire una connessione con il bilanciatore del carico di rete passthrough esterno regionale. I valori possibili sono TLS 1.0, 1.1, 1.2, 1.3 o QUIC. Questo valore è impostato su NULL se il client non utilizza TLS/SSL la crittografia.
crittografia string Facoltativo crittografia TLS che i client utilizzano per stabilire una connessione con il bilanciatore del carico di rete passthrough esterno regionale. Questo valore è impostato su NULL se il client è non utilizza HTTP(S) o il client non utilizza la crittografia TLS/SSL.

Formato 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 viene verificata la catena di certificati client in base a una TrustStore; altrimenti false.

clientCertError string Facoltativo

Stringhe predefinite che rappresentano le condizioni di errore. Per ulteriori informazioni informazioni sulle stringhe di errore, consulta 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 aggiunto a client_cert_error e il numero di serie sia impostato su una stringa vuota.

clientCertValidStartTime string Facoltativo

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

clientCertValidEndTime string Facoltativo

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

clientCertSpiffeId string Facoltativo

La ID SPIFFE dal campo del nome alternativo del soggetto (SAN). Se il valore non è valido o supera i 2048 byte, l'ID SPIFFE è impostato su una stringa vuota.

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

clientCertUriSans string Facoltativo

Elenco con codifica Base64 separato da virgole 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 aggiunto a client_cert_error e l'elenco separato da virgole sia impostato su una stringa vuota.

clientCertDnsnameSans string Facoltativo

Elenco con codifica Base64 separato da virgole delle estensioni SAN di tipo Nome DNS. 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 aggiunto a client_cert_error e l'elenco separato da virgole sia 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 aggiunto a client_cert_error e client_cert_issuer_dn è impostata su una stringa vuota.

clientCertSubjectDn string Facoltativo

Campo Oggetto completo con codifica Base64 del certificato.

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

clientCertLeaf string Facoltativo

Il certificato foglia client per una connessione mTLS stabilita in cui il certificato ha superato la convalida. La codifica del certificato è conforme con RFC 9440: il certificato binario DER è codificato utilizzando il formato Base64 (senza interruzioni di riga, spazi o altri caratteri al di fuori dell'alfabeto Base64) e delimitati con due punti ai lati.

Se client_cert_leaf supera i 16 kB non codificati, la stringa client_cert_validated_leaf_exceeded_size_limit aggiunto a client_cert_error e client_cert_leaf impostati in una stringa vuota.

clientCertChain string Facoltativo

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

Se la dimensione combinata di client_cert_leaf e client_cert_chain prima della codifica Base64 supera i 16 kB, il valore la stringa client_cert_validated_chain_exceeded_size_limit è aggiunto a client_cert_error e client_cert_chain sia impostato su una stringa vuota.

campo errore proxyStatus

Il campo proxyStatus contiene una stringa che specifica il motivo del caricamento bilanciatore ha restituito un errore. La proxyStatus è composta da due parti proxyStatus error e proxyStatus details. Questa sezione descrive le stringhe supportate in proxyStatus error .

L'errore proxyStatus è 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 di accompagnamento
destination_unavailable Il bilanciatore del carico considera il backend non disponibile. Ad esempio: i recenti tentativi di comunicare con il backend non sono riusciti oppure il controllo di integrità potrebbe aver causato un errore. 500, 503
connection_timeout Il tentativo del bilanciatore del carico di aprire una connessione al backend ha timeout. 504
connection_terminated

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

Questo valore proxyStatus error viene restituito in uno dei seguenti scenari:

  • La connessione del bilanciatore del carico al backend è terminata prima che venga completata quando viene ricevuta una risposta.
  • La connessione TLS non è riuscita durante l'handshake SSL, ma il client non lo ha fatto stabilire 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 in modo da limitare il numero di connessioni al backend e questo limite è stato superato.

Questo valore proxyStatus error viene restituito in uno dei seguenti scenari:

  • Se un backend è in modalità di manutenzione, il traffico non può essere instradato al backend.
  • Se la richiesta è soggetta a limitazioni di frequenza locale.
  • Envoy sta gestendo 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 del backend. 502, 503
proxy_configuration_error Il bilanciatore del carico ha riscontrato un errore di configurazione interno. 500
proxy_internal_error Si è verificato un errore interno del bilanciatore del carico. 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 inadempienza dei pagamenti.
http_response_timeout Il bilanciatore del carico ha raggiunto un timeout del servizio di backend configurato limite massimo in attesa della risposta completa dal backend. 504, 408
http_request_error Il bilanciatore del carico ha riscontrato un errore HTTP 4xx, che indica la presenza di 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 riscontrato un errore TLS durante l'handshake TLS. 0
tls_certificate_error Il bilanciatore del carico ha riscontrato un errore durante la verifica del certificato presentati dal server o dal client quando mTLS è abilitato. 0
tls_alert_received Il bilanciatore del carico ha riscontrato un avviso TLS irreversibile durante il processo TLS handshake. 0

campo dettagli proxyStatus

Il campo proxyStatus contiene una stringa che specifica il motivo del caricamento bilanciatore ha restituito un errore. La proxyStatus è composta da due parti proxyStatus error e proxyStatus details. Il campo proxyStatus details è facoltativo e viene mostrato solo quando sono disponibili ulteriori informazioni. Questa sezione descrive le stringhe supportate in proxyStatus details .

I dettagli proxyStatus è 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 proxyStatus Descrizione Codici di risposta comuni di accompagnamento
client_disconnected_before_any_response La connessione al client si è interrotta prima dell'invio del bilanciatore del carico qualsiasi risposta. 0
backend_connection_closed Il backend ha chiuso inaspettatamente 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 più breve rispetto 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 timeout durante la fase di connessione. 503
failed_to_pick_backend Il bilanciatore del carico non è riuscito a scegliere un backend integro per gestire la richiesta. 502
response_sent_by_backend La richiesta HTTP è stata trasferita correttamente tramite proxy al backend e è 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 limite di inattività timeout.

Per saperne di più sul bilanciatore del carico delle applicazioni esterno regionale, consulta Timeout keepalive HTTP del client. Per saperne di più sul bilanciatore del carico delle applicazioni interno, consulta Timeout keepalive HTTP del client.
0, 408
backend_timeout

Timeout del backend 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 di protocollo HTTP. 400, 503
http_version_not_supported La versione del protocollo HTTP non è supportata. Solo HTTP 0.9, 1.0, 1.1 e 2.0 sono supportati. 400
handled_by_identity_aware_proxy Questa risposta è stata generata da Identity-Aware Proxy (IAP) durante la verifica dell'identità prima di consentire l'accesso. 200, 302, 400, 401, 403, 500, 502
invalid_request_headers Le intestazioni della richiesta HTTP ricevute da un client non sono valide. 400, 404
ip_detection_failed Impossibile rilevare l'indirizzo IP originale. Qualsiasi codice di risposta possibile a seconda della natura dell'errore. La 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 è scaduta perché il bilanciatore del carico non ha ricevuto per completare la richiesta entro cinque secondi. 408, 504
denied_by_security_policy Il bilanciatore del carico ha rifiutato questa richiesta a causa di un Criterio di sicurezza di Google Cloud Armor. 403
throttled_by_security_policy La richiesta è stata bloccata da una regola di limitazione di Google Cloud Armor. 429
client_cert_chain_invalid_eku Il certificato client o l'emittente non dispone di utilizzo esteso della chiave che include clientAuth. Per ulteriori informazioni, vedi Errori registrati per connessioni chiuse. 0
client_cert_chain_max_name_constraints_exceeded Un certificato intermedio fornito per la convalida ha ricevuto più di 10 vincoli relativi ai nomi. Per ulteriori informazioni, consulta Errori registrati per connessioni chiuse. 0
client_cert_invalid_rsa_key_size Un certificato foglia client o certificato intermedio aveva una dimensione della chiave RSA non valida. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_not_provided Il client non ha fornito il certificato richiesto durante l'handshake. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_pki_too_large L'infrastruttura a chiave pubblica da usare per la convalida ha più di tre che condividono gli stessi indirizzi Subject Subject Public Key Info. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_unsupported_elliptic_curve_key Un certificato client o intermedio utilizza un'ellittica non supportata della curva. Per saperne di più, consulta 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 saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_validation_failed Il certificato client non supera la convalida con TrustConfig. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_validation_not_performed Hai configurato TLS reciprocamente senza configurare un TrustConfig. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_validation_search_limit_exceeded Viene raggiunto il limite di profondità o iterazione durante il tentativo di convalidare nella catena di certificati. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
client_cert_validation_timed_out È stato superato il limite di tempo (200 ms) durante la convalida della catena di certificati. Per saperne di più, consulta Errori registrati per connessioni chiuse. 0
tls_version_not_supported La versione del protocollo TLS è riconosciuta, ma non supportata. Errore determina una connessione TLS chiusa. 0
unknown_psk_identity I server inviano questo errore quando è richiesta la creazione della chiave PSK. ma il client non fornisce un'identità PSK accettabile. Risultati dell'errore in una connessione TLS chiusa. 0
no_application_protocol Inviata dai server quando un client "application_layer_protocol_negotiation" pubblicizza solo i protocolli non supportati dal server. Vedi Estensione di negoziazione del protocollo a livello di applicazione TLS. L'errore causa una connessione TLS chiusa. 0
no_certificate Nessun certificato trovato. L'errore causa una connessione TLS chiusa. 0
bad_certificate Un certificato non è valido o contiene firme che non è stato possibile verificati. L'errore causa una connessione TLS chiusa. 0
unsupported_certificate Il certificato è di un tipo non supportato. L'errore causa la chiusura Connessione TLS. 0
certificate_revoked Un certificato è stato revocato dal firmatario. L'errore causa la chiusura Connessione TLS. 0
certificate_expired Un certificato è scaduto o non è valido. L'errore causa la chiusura Connessione TLS. 0
certificate_unknown Si sono verificati alcuni problemi non specificati durante l'elaborazione del certificato, il rendering non lo è. L'errore causa una connessione TLS chiusa. 0
unknown_ca È stata ricevuta una catena di certificati valida o una catena parziale, ma Il certificato non è stato accettato perché non è stato possibile trovare il certificato CA o abbinati a un trust anchor noto. L'errore provoca la chiusura di un protocollo TLS connessione. 0
unexpected_message Un messaggio inappropriato, ad esempio un messaggio di handshake errato o prematuro sono stati ricevuti i dati dell'applicazione. L'errore causa una connessione TLS chiusa. 0
bad_record_mac È stato ricevuto un record che non può essere rimosso. L'errore genera connessione TLS chiusa. 0
record_overflow È stato ricevuto un record TLSCiphertext di durata superiore più di 214+256 byte oppure un record è stato decriptato Record TLSPlaintext con più di 214 byte (o qualche altro limite negoziato). L'errore provoca la chiusura di un protocollo TLS connessione. 0
handshake_failure Impossibile negoziare un set accettabile di parametri di sicurezza, dato il le opzioni disponibili. L'errore causa una connessione TLS chiusa. 0
illegal_parameter Un campo dell'handshake non era corretto o non era coerente con altri campi. L'errore causa una connessione TLS chiusa. 0
access_denied È stato ricevuto un certificato valido o una PSK, ma quando il controllo dell'accesso è stato applicata, il cliente non ha proceduto alla negoziazione. L'errore causa una connessione TLS chiusa. 0
decode_error Impossibile decodificare un messaggio perché alcuni campi erano fuori dal specificato o la lunghezza del messaggio non era corretta. Risultati dell'errore in una connessione TLS chiusa. 0
decrypt_error Un'operazione crittografica di handshake (non a livello di record) non è riuscita, tra cui impossibilità di verificare correttamente una firma o convalidare un messaggio completato o un raccoglitore PSK. L'errore causa una connessione TLS chiusa. 0
insufficient_security Una negoziazione non è riuscita, perché il server richiede sono più sicuri di quelli supportati dal client. Risultati dell'errore in una connessione TLS chiusa. 0
inappropriate_fallback Inviata da un server in risposta a un nuovo tentativo di connessione non valido da un cliente. L'errore causa una connessione TLS chiusa. 0
user_cancelled L'utente annulla l'handshake per qualche motivo non correlato a un errore di protocollo. L'errore causa una connessione TLS chiusa. 0
missing_extension Inviato da endpoint che ricevono un messaggio di handshake non contenente un un'estensione obbligatoria da inviare per la versione TLS offerta o altro e i parametri negoziati. L'errore causa una connessione TLS chiusa. 0
unsupported_extension Inviato da endpoint che ricevono messaggi di handshake contenenti un'estensione notoriamente vietata l'inclusione nel messaggio di handshake specificato; oppure incluse eventuali estensioni in ServerHello o Certificate che non è stato offerto per la prima volta nella corrispondente ClientHello o CertificateRequest. L'errore causa una connessione TLS chiusa. 0
unrecognized_name Inviato dai server quando non esiste alcun server che possa essere identificato dal nome. forniti dal client tramite il parametro "server_name" . Vedi Definizioni delle estensioni TLS. 0
bad_certificate_status_response Inviati dai clienti quando viene fornita una risposta OCSP non valida o non accettabile dal server attraverso "status_request" . Vedi Definizioni delle estensioni TLS. L'errore causa una connessione TLS chiusa. 0
load_balancer_configured_resource_limits_reached Il bilanciatore del carico ha raggiunto i limiti di risorse configurati, ad esempio e il numero massimo di connessioni. 400, 500, 503

Voci di log per la connessione TLS non riuscite

In caso di errore della connessione TLS tra il client e il bilanciatore del carico prima del giorno se selezioni qualsiasi backend, le voci di log registrano gli errori. Puoi configurare di backend con frequenze di campionamento dei log diverse. Quando una connessione TLS non va a buon fine, la frequenza di campionamento dei log per le connessioni TLS non riuscite è la più alta di servizio di backend. Ad esempio, se hai configurato due servizi di backend con frequenza di campionamento del logging come 0.3 e 0.5, esempio di log per la connessione TLS non riuscita è 0.5.

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

  • Il tipo di errore proxyStatus è tls_alert_received, tls_certificate_error tls_protocol_error o connection_terminated.
  • Nessuna informazione di backend.

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

   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"
  

Etichette risorse

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

Campo Tipo Descrizione
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.
url_map_name string Il nome dell'URL l'oggetto mappa configurato per selezionare un servizio di backend.
forwarding_rule_name string Il nome dell'oggetto della regola di forwarding.
target_proxy_name string Il nome del all'oggetto proxy di destinazione a cui fa riferimento la regola di forwarding.
matched_url_path_rule string La regola del percorso della mappa URL o la regola di route configurata come parte della mappa URL chiave. Può essere UNMATCHED o UNKNOWN come opzioni di riserva.
  • UNMATCHED si riferisce a una richiesta che non corrisponde a un percorso dell'URL quindi usa la regola di percorso predefinita.
  • UNKNOWN indica un errore interno.
backend_target_name string Il nome del backend selezionato per gestire la richiesta, in base all'URL una regola percorso della mappa o una regola di route che corrisponde alla richiesta.
backend_target_type string Il tipo di target backend (BACKEND_SERVICE / UNKNOWN).
backend_name string Il nome del gruppo di istanza di backend o NEG.
backend_type string

Il tipo di backend, un gruppo di istanze o un NEG oppure sconosciuto.

Cloud Logging registra le richieste quando backend_type viene UNKNOWN anche se il logging è disabilitato. Ad esempio: se un client chiude la connessione al bilanciatore del carico prima il bilanciatore del carico può scegliere un backend, backend_type è impostato su UNKNOWN e la richiesta viene registrata. Questi log offrono utili funzionalità di debug informazioni sulle richieste del client chiuse perché il bilanciatore del carico non può selezionare un backend.

backend_scope string L'ambito del backend, il nome di una zona o di una regione. Potrebbe essere UNKNOWN ogni volta che backend_name è sconosciuto.
backend_scope_type string L'ambito del backend (REGION/ZONE). Forse sarà UNKNOWN ogni volta che backend_name è sconosciuto.
backend_target_cross_project_id Stringa L'ID progetto del servizio o del bucket di destinazione del backend. Questo campo è disponibile solo se la risorsa di destinazione del backend viene creata in un progetto diverso da quello in cui è stata creata la risorsa url_map.

Visualizza i log per la convalida dei certificati client mTLS

Per visualizzare gli errori registrati per le connessioni chiuse durante la convalida reciproca dei certificati client TLS, completa i seguenti passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic sul pulsante di attivazione/disattivazione Mostra query per abilitare l'editor query.

  3. Incolla il codice seguente nel campo Query. Sostituisci FORWARDING_RULE_NAME con il nome del tuo di una regola di forwarding.

    jsonPayload.statusDetails=~"client_cert"
    jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
    
  4. Fai clic su Esegui query.

Monitoraggio

I bilanciatori del carico delle applicazioni interni esportano i dati di monitoraggio in Monitoraggio.

Le metriche di monitoraggio possono essere utilizzate per i seguenti scopi:

  • Valutazione della configurazione, dell'utilizzo e delle prestazioni di un bilanciatore del carico
  • Risoluzione dei problemi
  • Migliorare l'utilizzo delle risorse e l'esperienza utente

Oltre alle dashboard predefinite in Monitoring, puoi creare dashboard personalizzate, configurare avvisi ed eseguire query sulle metriche tramite API Monitoring.

Visualizzazione delle metriche di Cloud Monitoring

Console

Per visualizzare le metriche per una risorsa monitorata mediante Metrics Explorer, segui questi passaggi:

  1. Nella console Google Cloud, vai alla Pagina Esplora metriche:

    Vai a Esplora metriche

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

  2. Nell'elemento Metrica, espandi il menu Seleziona una metrica, inserisci Internal Application Load Balancer Rule nella barra dei filtri, poi utilizza i sottomenu per selezionare un tipo di risorsa e una metrica specifici:
    1. Nel menu Risorse attive, seleziona Regola del bilanciatore del carico delle applicazioni interno.
    2. Per selezionare una metrica, utilizza i menu Categorie di metriche attive e Metriche attive.
    3. Fai clic su Applica.
  3. Per rimuovere le serie temporali dal display, utilizza il metodo Elemento Filtro:

  4. Per combinare le serie temporali, utilizza i menu nella Elemento di aggregazione: Ad esempio, per visualizzare l'utilizzo della CPU per le VM, in base alla zona, imposta il valore il primo menu su Media e il secondo menu su zone.

    Tutte le serie temporali vengono visualizzate quando è impostato il primo menu dell'elemento Aggregation in Unaggregated (Non aggregato). Le impostazioni predefinite per l'elemento Aggregation sono determinati dal tipo di metrica selezionato.

  5. Per la quota e altre metriche che registrano un campione al giorno:
    1. Nel riquadro Display, Imposta Tipo di widget su Grafico a barre in pila.
    2. Imposta il periodo di tempo su almeno una settimana.

Definizione dei criteri di avviso

Console

Puoi creare criteri di avviso per monitorare i valori delle metriche e ricevere notifiche quando queste metriche 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 Monitoraggio.

  2. 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.
  3. Nella pagina Avvisi, seleziona Crea criterio.
  4. Per selezionare la metrica, espandi il menu Seleziona una metrica e poi segui questi passaggi:
      .
    1. Per limitare il menu alle voci pertinenti, inserisci Internal 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.
    2. Per Tipo di risorsa, seleziona Regola del bilanciatore del carico delle applicazioni interno.
    3. Seleziona una Categoria di metrica e una Metrica, quindi seleziona Applica.
  5. Fai clic su Avanti.
  6. Le impostazioni nella pagina Configura trigger avviso determinano quando l'avviso viene attivato. Seleziona un tipo di condizione e, se necessario, specifica una soglia. Per ulteriori informazioni le informazioni, vedi Crea criteri di avviso per la soglia delle metriche.
  7. Fai clic su Avanti.
  8. (Facoltativo) Per aggiungere notifiche al criterio di avviso, fai clic su Canali di notifica. Nella finestra di dialogo, seleziona una o più notifiche canali dal menu, quindi fai clic su OK.
  9. (Facoltativo) Aggiorna la Durata della chiusura automatica degli incidenti. Questo campo determina quando Il monitoraggio chiude gli incidenti in assenza di dati delle metriche.
  10. (Facoltativo) Fai clic su Documentazione, quindi aggiungi le eventuali informazioni da 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 saperne di più, consulta Criteri di avviso.

Definizione delle dashboard personalizzate di Monitoring

Console

Puoi creare dashboard di Monitoring personalizzate del bilanciatore del carico delle applicazioni interno:

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

    Vai a Monitoring

  2. Seleziona Dashboard > Crea dashboard.

  3. Fai clic su Aggiungi grafico.

  4. Assegna un titolo al grafico.

  5. Seleziona metriche e filtri. Per le metriche, il tipo di risorsa è Bilanciatore del carico HTTP/S interno.

  6. Fai clic su Salva.

Frequenza e fidelizzazione dei report sulle metriche

Le metriche per i bilanciatori del carico vengono esportate in Monitoring Batch con granularità di 1 minuto. I dati di monitoraggio vengono conservati per sei (6) settimane. Il pannello fornisce l'analisi dei dati a intervalli predefiniti di 1 ora (un'ora), 6 h (sei ore), 1 g (un giorno), 1 w (una settimana) e 6 w (sei settimane). Puoi richiedere manualmente l'analisi in qualsiasi intervallo compreso tra 6 W e 1 minuto.

Monitoraggio delle metriche per i bilanciatori del carico delle applicazioni interni

Le seguenti metriche per i bilanciatori del carico delle applicazioni interni sono segnalati in Monitoring:

Metrica FQDN Descrizione
Conteggio delle richieste loadbalancing.googleapis.com/https/internal/request_count Il numero di richieste gestite dal bilanciatore del carico delle applicazioni interno.
Conteggio byte richiesta loadbalancing.googleapis.com/https/internal/request_bytes Il numero di byte inviati come richieste dai client alla il bilanciatore del carico delle applicazioni interno.
Conteggio byte risposta loadbalancing.googleapis.com/https/internal/response_bytes Il numero di byte inviati come risposte dall'HTTP(S) interno bilanciatore del carico al client.
Latenze totali loadbalancing.googleapis.com/https/internal/total_latencies Una distribuzione della latenza, in millisecondi. La latenza viene misurata dal momento in cui il proxy riceve il primo byte dell'email al momento in cui il proxy invia l'ultimo byte risposta.
Latenze di backend loadbalancing.googleapis.com/https/internal/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 una risposta dal backend.

Dimensioni di filtro per le metriche del bilanciatore del carico delle applicazioni interno

Le metriche sono aggregate per ogni bilanciatore del carico delle applicazioni interno. Puoi filtrare metriche aggregate in base alle seguenti dimensioni.

Proprietà Descrizione
BACKEND_SCOPE La zona Google Cloud o regione del gruppo di backend che ha gestito la richiesta del client, oppure una stringa speciale per i casi in cui non è stato assegnato il gruppo di backend. Esempi: us-central1-a, europe-west1-b, asia-east1, UNKNOWN.
PROXY_REGION Regione del bilanciatore del carico delle applicazioni interno, del client e del backend. Esempi: us-central1, europe-west1 o asia-east1.
BACKEND Il nome del gruppo di istanza di backend o NEG che ha fornito il client richiesta.
BACKEND_TARGET Il nome del servizio di backend che ha gestito la richiesta del client.
MATCHED_URL_RULE La regola del percorso della mappa URL o la regola di route corrispondente al prefisso del richiesta HTTP(S) client (fino a 50 caratteri).

La metrica Response code class fraction è supportata per l'intera con il bilanciatore del carico di rete passthrough esterno regionale. Non è supportata ulteriore granularità.

Passaggi successivi