Logging
Sie können Logs für den Backend-Dienst eines externen Anwendungs-Load-Balancers aktivieren, deaktivieren und aufrufen.
Sie aktivieren oder deaktivieren Logging für jeden Backend-Dienst. Sie können konfigurieren, ob alle Anfragen oder nur ein zufällig ausgewählter Teil protokolliert werden sollen.
Achten Sie darauf, dass kein Logausschluss vorhanden ist, der für den externen Application Load Balancer gilt. Wie Sie prüfen, ob Cloud HTTP Load
Balancer
-Logs zulässig sind, erfahren Sie unter Ausgeschlossene Ressourcentypen ansehen.
Optionale Felder
Logdatensätze umfassen Pflichtfelder und optionale Felder. Im Abschnitt Was wird protokolliert? werden die optionalen Felder und die erforderlichen Felder aufgeführt. Alle Pflichtfelder sind immer enthalten. Sie können festlegen, welche optionalen Felder beibehalten werden.
Wenn Sie Alle optionalen einschließen auswählen, sind alle optionalen Felder im Logdatensatzformat in den Logs enthalten. Wenn dem Eintragsformat neue optionale Felder hinzugefügt werden, enthalten die Logs automatisch die neuen Felder.
Wenn Sie Alle optionalen ausschließen auswählen, werden alle optionalen Felder weggelassen.
Wenn Sie Benutzerdefiniert auswählen, können Sie die optionalen Felder angeben, die Sie einschließen möchten, z. B.
tls.protocol,tls.cipher
.
Eine Anleitung zum Anpassen optionaler Felder finden Sie unter Logging auf einem neuen Backend-Dienst aktivieren.
Logging für einen neuen Backend-Dienst aktivieren
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers.
Klicken Sie auf
Bearbeiten.Klicken Sie auf Backend-Konfiguration.
Wählen Sie Backend-Dienst erstellen aus.
Füllen Sie die Pflichtfelder für den Backend-Dienst aus.
Klicken Sie im Bereich Logging das Kästchen Logging aktivieren an.
Legen Sie im Feld Abtastrate die Inklusionswahrscheinlichkeit fest. Sie können eine Zahl von
0.0
bis1.0
festlegen, wobei0.0
bedeutet, dass keine Anfragen in Logs erfasst werden, und1.0
bedeutet, dass 100 % der Anfragen in Logs erfasst werden. Der Standardwert ist1.0
Optional: Wenn Sie alle optionalen Felder in die Logs aufnehmen möchten, klicken Sie im Abschnitt Optionale Felder auf Alle optionalen Felder einschließen.
Klicken Sie auf Aktualisieren, um das Bearbeiten des Backend-Dienstes abzuschließen.
Klicken Sie auf Aktualisieren, um das Bearbeiten des Load-Balancers abzuschließen.
gcloud: Modus "Regional"
Erstellen Sie einen Backend-Dienst und aktivieren Sie das Logging mit dem Befehl 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
Dabei gilt:
--region
gibt an, dass der Backend-Dienst regional ist. Verwenden Sie dieses Feld für Backend-Dienste, die mit regionalen externen Anwendungs-Load-Balancern verwendet werden.--enable-logging
aktiviert das Logging für diesen Backend-Dienst.- Mit
--logging-sample-rate
können Sie einen Wert zwischen0.0
und1.0
angeben, wobei0.0
dazu führt, dass keine Anfragen in Logs erfasst werden, und1.0
bedeutet, dass 100 % der Anfragen in Logs erfasst werden. Dies ist nur mit dem Parameter--enable-logging
sinnvoll. Wenn Sie das Logging aktivieren und die Abtastrate auf0.0
festlegen, entspricht dies einer Deaktivierung des Loggings. Der Standardwert ist1.0
Mit
--logging-optional
können Sie die optionalen Felder angeben, die in den Logs enthalten sein sollen:INCLUDE_ALL_OPTIONAL
, um alle optionalen Felder einzuschließen.EXCLUDE_ALL_OPTIONAL
(Standard), um alle optionalen Felder auszuschließen.CUSTOM
zum Hinzufügen einer benutzerdefinierten Liste von optionalen Feldern, die Sie inOPTIONAL_FIELDS
angeben.
Mit
--logging-optional-fields
können Sie eine durch Kommas getrennte Liste optionaler Felder angeben, die in die Logs aufgenommen werden sollen.Beispiel:
tls.protocol,tls.cipher
kann nur festgelegt werden, wennLOGGING_OPTIONAL_MODE
aufCUSTOM
eingestellt ist.
Logging für vorhandenen Backend-Dienst aktivieren
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers.
Klicken Sie auf
Bearbeiten.Klicken Sie auf Backend-Konfiguration.
Klicken Sie neben Ihrem Backend-Dienst auf
Bearbeiten.Klicken Sie im Bereich Logging das Kästchen Logging aktivieren an.
Legen Sie im Feld Abtastrate die Inklusionswahrscheinlichkeit fest. Sie können eine Zahl von
0.0
bis1.0
festlegen, wobei0.0
bedeutet, dass keine Anfragen in Logs erfasst werden, und1.0
bedeutet, dass 100 % der Anfragen in Logs erfasst werden. Der Standardwert ist1.0
Optional: Wenn Sie alle optionalen Felder in die Logs aufnehmen möchten, klicken Sie im Abschnitt Optionale Felder auf Alle optionalen Felder einschließen.
Klicken Sie auf Aktualisieren, um das Bearbeiten des Backend-Dienstes abzuschließen.
Klicken Sie auf Aktualisieren, um das Bearbeiten des Load-Balancers abzuschließen.
gcloud: Modus "Regional"
Aktivieren Sie das Logging für einen vorhandenen Backend-Dienst mit dem Befehl 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
Dabei gilt:
--region
gibt an, dass der Backend-Dienst regional ist. Verwenden Sie dieses Feld für Backend-Dienste, die mit regionalen externen Anwendungs-Load-Balancern verwendet werden.--enable-logging
aktiviert das Logging für diesen Backend-Dienst.- Mit
--logging-sample-rate
können Sie einen Wert zwischen0.0
und1.0
angeben, wobei0.0
dazu führt, dass keine Anfragen in Logs erfasst werden, und1.0
bedeutet, dass 100 % der Anfragen in Logs erfasst werden. Dies ist nur mit dem Parameter--enable-logging
sinnvoll. Wenn Sie das Logging aktivieren und die Abtastrate auf0.0
festlegen, entspricht dies einer Deaktivierung des Loggings. Der Standardwert ist1.0
Mit
--logging-optional
können Sie die optionalen Felder angeben, die in den Logs enthalten sein sollen:INCLUDE_ALL_OPTIONAL
, um alle optionalen Felder einzuschließen.EXCLUDE_ALL_OPTIONAL
(Standard), um alle optionalen Felder auszuschließen.CUSTOM
zum Hinzufügen einer benutzerdefinierten Liste von optionalen Feldern, die Sie inOPTIONAL_FIELDS
angeben.
Mit
--logging-optional-fields
können Sie eine durch Kommas getrennte Liste optionaler Felder angeben, die in die Logs aufgenommen werden sollen.Beispiel:
tls.protocol,tls.cipher
Kann nur festgelegt werden, wennLOGGING_OPTIONAL_MODE
aufCUSTOM
gesetzt ist.
Logging für einen vorhandenen Backend-Dienst deaktivieren oder ändern
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers.
Klicken Sie auf
Bearbeiten.Klicken Sie auf Backend-Konfiguration.
Klicken Sie neben Ihrem Backend-Dienst auf
Bearbeiten.Um das Logging vollständig zu deaktivieren, entfernen Sie im Abschnitt Logging das Häkchen aus dem Kästchen Logging aktivieren.
Wenn das Logging aktiviert bleibt, können Sie im Feld Abtastrate eine andere Inklusionswahrscheinlichkeit festlegen. Sie können eine Zahl von
0.0
bis1.0
festlegen, wobei0.0
bedeutet, dass keine Anfragen in Logs erfasst werden, und1.0
bedeutet, dass 100 % der Anfragen in Logs erfasst werden. Der Standardwert ist1.0
. Zur Reduzierung der Anzahl der gespeicherten Logs auf 20 % legen Sie den Wert auf0.2
fest.Klicken Sie auf Aktualisieren, um die Bearbeitung des Backend-Dienstes abzuschließen.
Klicken Sie auf Aktualisieren, um das Bearbeiten des Load-Balancers abzuschließen.
gcloud: Modus "Regional"
Deaktivieren Sie das Logging für den Backend-Dienst mit dem Befehl gcloud compute backend-services update
.
Logging vollständig deaktivieren
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --no-enable-logging
Dabei gilt:
--region
gibt an, dass der Backend-Dienst regional ist. Verwenden Sie dieses Feld für Backend-Dienste, die mit regionalen externen Application Load Balancern verwendet werden.--no-enable-logging
deaktiviert das Logging für diesen Backend-Dienst.
Abtastrate für das Logging ändern
gcloud compute backend-services update BACKEND_SERVICE \ --global | --region=REGION \ --logging-sample-rate=VALUE
Logs ansehen
HTTP(S)-Logs werden zuerst nach einer Weiterleitungsregel, dann nach einer URL-Zuordnung indexiert.
Um Logs anzusehen, öffnen Sie die Log-Explorer-Seite.
Zum Ansehen aller Logs wählen Sie im Filtermenü Ressource die Option Cloud-HTTP-Load-Balancer > Alle Weiterleitungsregeln aus.
Wenn Sie die Logs für nur eine Weiterleitungsregel aufrufen möchten, wählen Sie den Namen einer einzelnen Weiterleitungsregel aus.
Um Logs für eine URL-Zuordnung aufzurufen, wählen Sie eine Weiterleitungsregel und dann eine URL-Zuordnung aus.
Boolesche Logfelder werden normalerweise nur angezeigt, wenn sie den Wert true
haben.
Wenn ein boolesches Feld einen Wert false
hat, erscheint dieses Feld nicht im Log.
Für Logfelder wird eine UTF-8-Codierung erzwungen. Zeichen, bei denen es sich nicht um UTF-8-Zeichen handelt, werden durch Fragezeichen ersetzt.
Für regionale externe Anwendungs-Load-Balancer können Sie logbasierte Messwerte mithilfe von Ressourcenlogs (resource.type="http_external_regional_lb_rule"
) exportieren.
Was wird protokolliert?
Die Logeinträge des externen Application Load Balancers enthalten Informationen, die für das Monitoring und die Fehlerbehebung bei Ihrem HTTP(S)-Traffic nützlich sind. Logeinträge enthalten Pflichtfelder. Dies sind die Standardfelder jedes Logdatensatzes. Logeinträge umfassen optionale Felder mit zusätzlichen Informationen zum HTTP(S)-Traffic. Sie können weggelassen werden, um Speicherkosten zu sparen.
Einige Logfelder haben ein Mehrfeldformat mit mehr als einem Datenelement in einem bestimmten Feld. Das Feld tls
hat beispielsweise das Format TlsDetails
. Dieses Format enthält das TLS-Protokoll und die TLS-Chiffre in einem einzelnen Feld.
Diese Felder mit Mehrfeldformat werden in der Datensatzformattabelle beschrieben.
Feld | Feldformat | Feldtyp: Erforderlich oder optional | Beschreibung |
---|---|---|---|
Schweregrad insertID timestamp logName |
LogEntry | Erforderlich | Die allgemeinen Felder, wie in einem Logeintrag beschrieben. |
httpRequest | HttpRequest | Erforderlich | Ein gängiges Protokoll für Logging von HTTP-Anfragen |
resource | MonitoredResource | Erforderlich | Die MonitoredResource ist der Ressourcentyp, der einem Logeintrag zugeordnet ist. Der MonitoredResourceDescriptor beschreibt das Schema eines |
jsonPayload | object (Struct format) | Erforderlich | Nutzlast des Logeintrags, die als JSON-Objekt ausgedrückt wird. Das JSON-Objekt enthält die folgenden Felder:
|
String | Erforderlich | Das Feld Das Feld wird nicht protokolliert, wenn der Wert ein leerer String ist. Dies kann passieren, wenn der Proxy oder das Back-End keinen Fehler oder den Fehlercode zurückgibt, der nicht Das Feld
|
|
TlsDetails | Optional | Das Feld tls enthält die TlsDetails, die die TLS-Metadaten für die Verbindung zwischen dem Client und dem regionalen externen Anwendungs-Load-Balancer angeben. Dieses Feld ist nur verfügbar, wenn der Client die TLS/SSL-Verschlüsselung verwendet. |
|
MtlsDetails | Optional | Das Feld mtls enthält den Wert MtlsDetails, der die mTLS-Metadaten für die Verbindung zwischen dem Client und dem regionalen externen Application Load Balancer angibt.
Dieses Feld ist nur verfügbar, wenn der Load Balancer das gegenseitige TLS (mTLS) des Front-Ends verwendet.
|
Feldformat von TlsDetails
Feld | Feldformat | Feldtyp: Erforderlich oder optional | Beschreibung |
---|---|---|---|
protocol | String | Optional | TLS-Protokoll, mit dem Clients eine Verbindung mit dem Load Balancer herstellen können. Mögliche Werte sind TLS 1.0, 1.1, 1.2,
1.3 oder QUIC .
Dieser Wert wird auf NULL gesetzt, wenn der Client keine TLS/SSL-Verschlüsselung verwendet.
|
cipher | String | Optional | TLS-Chiffre, mit der Clients eine Verbindung mit dem Load Balancer herstellen können. Dieser Wert wird auf NULL gesetzt, wenn der Client kein HTTP(S) verwendet oder der Client keine TLS/SSL-Verschlüsselung verwendet.
|
Feldformat von MtlsDetails
Feld | Feldformat | Feldtyp: Erforderlich oder optional | Beschreibung |
---|---|---|---|
clientCertPresent | bool | Optional |
|
clientCertChainVerified | bool | Optional |
|
clientCertError | String | Optional | Vordefinierte Strings, die die Fehlerbedingungen darstellen. Weitere Informationen zu den Fehlerstrings finden Sie unter mTLS-Clientvalidierungsmodi. |
clientCertSha256Fingerprint | String | Optional | Base64-codierter SHA-256-Fingerabdruck des Clientzertifikats. |
clientCertSerialNumber | String | Optional | Die Seriennummer des Clientzertifikats.
Wenn die Seriennummer länger als 50 Bytes ist, wird der String |
clientCertValidStartTime | String | Optional | Zeitstempel (Datumsstringformat gemäß RFC 3339), vor dem das Clientzertifikat ungültig ist.
Beispiel: |
clientCertValidEndTime | String | Optional | Zeitstempel (Datumsstringformat gemäß RFC 3339), nach dem das Clientzertifikat ungültig ist.
Beispiel: |
clientCertSpiffeId | String | Optional | Die SPIFFE-ID aus dem Feld „Alternativer Antragstellername“ (SAN) Wenn der Wert ungültig ist oder 2.048 Byte überschreitet, wird die SPIFFE-ID auf einen leeren String gesetzt. Wenn die SPIFFE-ID länger als 2.048 Bytes ist, wird der String |
clientCertUriSans | String | Optional | Durch Kommas getrennte Liste mit Base64-codierten SAN-Erweiterungen vom Typ URI. Die SAN-Erweiterungen werden aus dem Clientzertifikat extrahiert.
Die SPIFFE-ID ist nicht im Feld Wenn das Feld |
clientCertDnsnameSans | String | Optional | Durch Kommas getrennte Liste mit Base64-codierten SAN-Erweiterungen vom Typ DNSName. Die SAN-Erweiterungen werden aus dem Clientzertifikat extrahiert. Wenn das Feld |
clientCertIssuerDn | String | Optional | Base64-codiertes vollständiges Ausstellerfeld aus dem Zertifikat. Wenn das Feld |
clientCertSubjectDn | String | Optional | Base64-codiertes vollständiges Subject-Feld aus dem Zertifikat. Wenn das Feld |
clientCertLeaf | String | Optional | Das untergeordnete Clientzertifikat für eine hergestellte mTLS-Verbindung, bei der das Zertifikat die Validierung bestanden hat. Die Zertifikatscodierung ist RFC 9440-konform: Das binäre DER-Zertifikat wird mit Base64 codiert (ohne Zeilenumbrüche, Leerzeichen oder andere Zeichen außerhalb des Base64-Alphabets) und durch Doppelpunkte auf beiden Seiten getrennt. Wenn |
clientCertChain | String | Optional | Die durch Kommas getrennte Liste der Zertifikate in Standard-TLS-Reihenfolge der Clientzertifikatskette für eine hergestellte mTLS-Verbindung, bei der das Clientzertifikat die Validierung bestanden hat, ohne das untergeordnete Zertifikat. Die Zertifikatscodierung ist konform mit RFC 9440. Wenn die Gesamtgröße von |
Ressourcenlabels
In der folgenden Tabelle sind die Ressourcenlabels für resource.type="http_external_regional_lb_rule"
aufgeführt.
Feld | Typ | Beschreibung |
---|---|---|
backend_name |
String | Der Name der Backend-Instanzgruppe oder der NEG. Bei einer fehlgeschlagenen TLS-Verbindung ist das Label jedoch leer. |
backend_scope |
String |
Der Bereich des Back-Ends (entweder ein Zonenname oder ein Regionsname). Kann UNKNOWN sein, wenn backend_name unbekannt ist.
|
backend_scope_type |
String | Der Bereich des Back-Ends (REGION /ZONE ). Kann UNKNOWN sein, wenn backend_name unbekannt ist. |
backend_target_name |
String | Der Name des Back-Ends, das für die Anfrage ausgewählt wurde, auf Basis der Pfadregel oder Routingregel der URL-Zuordnung, die mit der Anfrage übereinstimmt. |
backend_target_type |
String |
Der Typ des Backend-Ziels. Kann BACKEND_SERVICE sein oder UNKNOWN wird zurückgegeben, wenn das Backend nicht zugewiesen wurde.
|
backend_type |
String |
Der Typ der Backend-Gruppe. Kann INSTANCE_GROUP oder NETWORK_ENDPOINT_GROUP sein, oder UNKNOWN , wenn das Backend nicht zugewiesen wurde.
|
forwarding_rule_name |
String | Der Name des Weiterleitungsregelobjekts. |
matched_url_path_rule |
String |
Die Pfadregel oder Routingregel der URL-Zuordnung, die als Teil des URL-Zuordnungsschlüssels konfiguriert ist. Kann UNMATCHED oder UNKNOWN als Fallback sein.
|
network_name |
String | Der Name des VPC-Netzwerks des Load-Balancers. |
project_id |
String | Die Kennung des Google Cloud-Projekts, das dieser Ressource zugeordnet ist. |
region |
String | Die Region, in der der Load-Balancer definiert ist. |
target_proxy_name |
String | Der Name des Ziel-Proxy-Objekts, auf das die Weiterleitungsregel verweist. |
url_map_name |
String | Der Name des URL-Zuordnungsobjekts, das für die Auswahl eines Backend-Dienstes konfiguriert ist. Bei einer fehlgeschlagenen TLS-Verbindung ist das Feld leer. |
proxyStatus-Fehlerfeld
Das Feld proxyStatus
enthält einen String, der angibt, warum der Load-Balancer einen Fehler zurückgegeben hat. Das Feld proxyStatus
besteht aus zwei Teilen: proxyStatus error
und proxyStatus details
.
In diesem Abschnitt werden die Strings beschrieben, die im Feld proxyStatus error
unterstützt werden.
Das Feld proxyStatus error gilt für die folgenden Load-Balancer:
- Regionaler externer Application Load Balancer
- Regionsübergreifender interner Application Load Balancer
- Regionaler interner Application Load Balancer
proxyStatus-Fehler | Beschreibung | Häufige zugehörige Antwortcodes |
---|---|---|
destination_unavailable
|
Der Load-Balancer betrachtet das Backend als nicht verfügbar. Beispielsweise sind die letzten Kommunikationsversuche mit dem Backend fehlgeschlagen oder eine Systemdiagnose hat möglicherweise zu einem Fehler geführt. | 500, 503 |
connection_timeout
|
Beim Versuch, eine Verbindung zum Backend zu öffnen, ist eine Zeitüberschreitung aufgetreten. | 504 |
connection_terminated
|
Die Verbindung des Load-Balancers mit dem Back-End wurde beendet, bevor eine vollständige Antwort empfangen wurde. Dieser
|
0, 502, 503 |
connection_refused
|
Die Verbindung des Load-Balancers zum Backend wurde abgelehnt. | 502, 503 |
connection_limit_reached
|
Der Load-Balancer ist so konfiguriert, dass er die Anzahl seiner Verbindungen zum Backend begrenzt und dieses Limit wurde überschritten. Dieser
|
502, 503 |
destination_not_found
|
Der Load-Balancer kann nicht das richtige Backend für diese Anfrage ermitteln. Beispielsweise ist das Backend möglicherweise nicht konfiguriert. | 500, 404 |
dns_error
|
Der Load Balancer hat bei der Suche nach einer IP-Adresse für den Backend-Hostnamen einen DNS-Fehler festgestellt. | 502, 503 |
proxy_configuration_error
|
Der Load Balancer ist auf einen internen Konfigurationsfehler gestoßen. | 500 |
proxy_internal_error
|
Der Load Balancer hat einen internen Fehler festgestellt. | 0, 500, 502 |
proxy_internal_response
|
Der Load Balancer hat die Antwort generiert, ohne zu versuchen, eine Verbindung zum Backend herzustellen. | Jeder Antwortcode, der vom Problemtyp abhängt. Der Antwortcode 410 bedeutet beispielsweise, dass das Backend aufgrund von Zahlungsrückstand nicht verfügbar ist.
|
http_response_timeout
|
Der Load-Balancer hat ein konfiguriertes Zeitlimit für den Backend-Dienst erreicht, während er auf die vollständige Antwort vom Backend wartete. | 504, 408 |
http_request_error
|
Der Load-Balancer hat einen HTTP 4xx-Fehler festgestellt, der auf Probleme mit der Clientanfrage hinweist. | 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, oder 429 |
http_protocol_error
|
Der Load-Balancer hat bei der Kommunikation mit dem Backend einen HTTP-Protokollfehler festgestellt. | 502 |
tls_protocol_error
|
Der Load-Balancer hat während des TLS-Handshakes einen TLS-Fehler festgestellt. | 0 |
tls_certificate_error
|
Der Load Balancer hat bei der Überprüfung des vom Server oder vom Client bereitgestellten Zertifikats einen Fehler festgestellt, wenn mTLS aktiviert ist. | 0 |
tls_alert_received
|
Der Load-Balancer hat während des TLS-Handshakes eine schwerwiegende TLS-Benachrichtigung festgestellt. | 0 |
proxyStatus-Detailfeld
Das Feld proxyStatus
enthält einen String, der angibt, warum der Load-Balancer einen Fehler zurückgegeben hat. Das Feld proxyStatus
besteht aus zwei Teilen: proxyStatus error
und proxyStatus details
.
Das Feld proxyStatus details
ist optional und wird nur angezeigt, wenn zusätzliche Informationen verfügbar sind.
In diesem Abschnitt werden die Strings beschrieben, die im Feld proxyStatus details
unterstützt werden.
Das Feld proxyStatus-Details gilt für die folgenden Load-Balancer:
- Regionaler externer Application Load Balancer
- Regionaler interner Application Load Balancer
- Regionsübergreifender interner Application Load Balancer
proxyStatus-Details | Beschreibung | Häufige zugehörige Antwortcodes |
---|---|---|
client_disconnected_before_any_response
|
Die Verbindung mit dem Client wurde unterbrochen, bevor der Load-Balancer eine Antwort gesendet hat. | 0 |
backend_connection_closed
|
Das Back-End hat die Verbindung mit dem Load-Balancer unerwartet geschlossen. Dies kann passieren, wenn der Load-Balancer Traffic an eine andere Entität sendet, z. B. eine Drittanbieteranwendung, deren TCP-Zeitlimit kürzer als die 10-minütige Zeitüberschreitung des Load-Balancers (600 Sekunden) ist. | 502 |
failed_to_connect_to_backend
|
Der Load-Balancer konnte keine Verbindung mit dem Back-End herstellen. Dies gilt auch für Zeitüberschreitungen während der Verbindungsphase. | 503 |
failed_to_pick_backend
|
Der Load-Balancer konnte kein fehlerfreies Back-End für die Verarbeitung der Anfrage finden. | 502 |
response_sent_by_backend
|
Die HTTP-Anfrage wurde erfolgreich an das Backend weitergeleitet und die Antwort wurde vom Backend zurückgegeben. | Der HTTP-Antwortcode wird von der auf dem Back-End ausgeführten Software festgelegt. |
client_timed_out
|
Die Verbindung zwischen dem Load-Balancer und dem Client hat das Zeitlimit bei Inaktivität überschritten. Weitere Informationen zum regionalen externen Application Load Balancer finden Sie unter Client-HTTP-Keepalive-Zeitlimit. Weitere Informationen zum internen Application Load Balancer finden Sie unter Client-HTTP-Keepalive-Zeitlimit. |
0, 408 |
backend_timeout
|
Es gab eine Zeitüberschreitung beim Back-End, während eine Antwort erstellt wurde. |
502 |
http_protocol_error_from_backend_response
|
Die Back-End-Antwort enthält einen HTTP-Protokollfehler. | 501, 502 |
http_protocol_error_from_request
|
Die Clientanfrage enthält einen HTTP-Protokollfehler. | 400, 503 |
http_version_not_supported
|
Die HTTP-Protokollversion wird nicht unterstützt. Es werden nur HTTP 0.9, 1.0, 1.1 und 2.0 unterstützt. | 400 |
handled_by_identity_aware_proxy
|
Diese Antwort wurde von Identity-Aware Proxy (IAP) generiert, während die Identität des Clients überprüft wurde, bevor der Zugriff zugelassen wurde. | 200, 302, 400, 401, 403, 500, 502 |
invalid_request_headers
|
Die HTTP-Anfrageheader eines Clients sind ungültig. | 400, 404 |
ip_detection_failed
|
Die ursprüngliche IP-Adresse wurde nicht gefunden. | Abhängig von der Fehlerart ist jeder Antwortcode möglich. Der Wert muss zwischen 400 und 599 liegen. |
request_body_too_large
|
Der HTTP-Anfragetext hat die vom Load-Balancer unterstützte maximale Länge überschritten. | 413, 507 |
request_header_timeout
|
Es ist eine Zeitüberschreitung beim Anfrageheader aufgetreten, da der Load-Balancer die vollständige Anfrage nicht innerhalb von 5 Sekunden erhalten hat. | 408, 504 |
denied_by_security_policy
|
Der Load-Balancer hat diese Anfrage aufgrund einer Google Cloud Armor-Sicherheitsrichtlinie abgelehnt. | 403 |
throttled_by_security_policy
|
Die Anfrage wurde durch eine Drosselungsregel von Google Cloud Armor blockiert. | 429 |
client_cert_chain_invalid_eku
|
Entweder hat das Clientzertifikat oder sein Aussteller keine erweiterte Schlüsselverwendung, die clientAuth enthält. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_chain_max_name_constraints_exceeded
|
Ein Zwischenzertifikat zur Validierung hatte mehr als 10 Namenseinschränkungen.. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_invalid_rsa_key_size
|
Ein Klientenblatt oder Zwischenzertifikat hat eine ungültige RSA-Schlüsselgröße. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_not_provided
|
Der Client hat während des Handshakes das angeforderte Zertifikat nicht bereitgestellt. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_pki_too_large
|
Die für die Validierung zu verwendende PKI hat mehr als drei Zwischenzertifikate, die dieselben Subject und Subject Public Key Info haben.
Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen.
|
0 |
client_cert_unsupported_elliptic_curve_key
|
Ein Client- oder ein Zwischenzertifikat verwendet eine nicht unterstützte elliptische Kurve. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_unsupported_key_algorithm
|
Ein Client- oder Zwischenzertifikat verwendet einen Nicht-RSA- oder Nicht-ECDSA-Algorithmus. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_validation_failed
|
Die Validierung des Clientzertifikats schlägt mit TrustConfig fehl.
Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen.
|
0 |
client_cert_validation_not_performed
|
Sie haben gegenseitiges TLS konfiguriert, ohne TrustConfig eingerichtet zu haben.
Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen.
|
0 |
client_cert_validation_search_limit_exceeded
|
Das Limit für die Tiefe oder Iteration wurde beim Prüfen der Zertifikatskette erreicht. Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
client_cert_validation_timed_out
|
Das Zeitlimit wurde bei der Validierung der Zertifikatskette überschritten (200 ms). Weitere Informationen finden Sie unter Protokollierte Fehler für geschlossene Verbindungen. | 0 |
tls_version_not_supported
|
Die TLS-Protokollversion wird erkannt, aber nicht unterstützt. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
unknown_psk_identity
|
Server senden diesen Fehler, wenn die Einrichtung eines PSK-Schlüssels erforderlich ist, der Client jedoch keine akzeptable PSK-Identität bereitstellt. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
no_application_protocol
|
Wird von Servern gesendet, wenn ein Client mit der Erweiterung „application_layer_protocol_negotiation“ nur Protokolle bewirbt, die der Server nicht unterstützt. Weitere Informationen finden Sie unter Erweiterung der Protokollverhandlung auf Anwendungsebene für TLS. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
no_certificate
|
Es wurde kein Zertifikat gefunden. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
bad_certificate
|
Ein Zertifikat ist ungültig oder enthält Signaturen, die nicht überprüft werden konnten. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
unsupported_certificate
|
Der Typ eines Zertifikats wird nicht unterstützt. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
certificate_revoked
|
Ein Zertifikat wurde von seinem Unterzeichner widerrufen. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
certificate_expired
|
Ein Zertifikat ist abgelaufen oder ungültig. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
certificate_unknown
|
Bei der Verarbeitung des Zertifikats sind einige nicht spezifizierte Probleme aufgetreten, sodass es inakzeptabel ist. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
unknown_ca
|
Es wurde eine gültige Zertifikatskette oder eine Teilkette empfangen, aber das Zertifikat wurde nicht akzeptiert, weil das CA-Zertifikat nicht gefunden oder mit einem bekannten Vertrauensanker abgeglichen werden konnte. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
unexpected_message
|
Eine ungeeignete Nachricht, wie z. B. eine falsche Handshake-Nachricht oder vorzeitige Anwendungsdaten, wurde empfangen. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
bad_record_mac
|
Ein Eintrag wurde empfangen, dessen Schutz nicht aufgehoben werden kann. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
record_overflow
|
Es wurde ein TLSCiphertext -Datensatz mit einer Länge von mehr als 214+256 Byte empfangen, oder ein Datensatz wurde in einen TLSPlaintext -Datensatz mit mehr als 214 Byte (oder einem anderen vereinbarten Limit) entschlüsselt. Der Fehler führt zu einer geschlossenen TLS-Verbindung.
|
0 |
handshake_failure
|
Aufgrund der verfügbaren Optionen kann kein akzeptabler Satz von Sicherheitsparametern ausgehandelt werden. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
illegal_parameter
|
Ein Feld im Handshake war falsch oder stimmt nicht mit anderen Feldern überein. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
access_denied
|
Ein gültiges Zertifikat oder eine gültige PSK wurde empfangen, aber als die Zugriffssteuerung angewendet wurde, hat der Client die Verhandlung nicht fortgesetzt. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
decode_error
|
Eine Nachricht konnte nicht decodiert werden, da einige Felder außerhalb des angegebenen Bereichs lagen oder die Länge der Nachricht falsch war. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
decrypt_error
|
Eine kryptografische Operation des Handshakes (nicht des Datensatzes) ist fehlgeschlagen, z. B. konnte eine Signatur nicht korrekt verifiziert oder eine fertige Nachricht oder ein PSK-Binder nicht validiert werden. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
insufficient_security
|
Eine Verhandlung ist fehlgeschlagen, weil der Server Parameter benötigt, die sicherer sind, als vom Client unterstützt werden. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
inappropriate_fallback
|
Von einem Server als Antwort auf einen ungültigen Verbindungswiederholungsversuch von einem Client gesendet. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
user_cancelled
|
Der Nutzer bricht den Handshake aus einem Grund ab, der nicht mit einem Protokollfehler zusammenhängt. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
missing_extension
|
Wird von Endpunkten gesendet, die eine Handshake-Nachricht erhalten, die keine Erweiterung enthält, die für die angebotene TLS-Version oder andere ausgehandelte Parameter gesendet werden muss. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
unsupported_extension
|
Wird von Endpunkten gesendet, die eine Handshake-Nachricht empfangen, die eine Erweiterung enthält, von der bekannt ist, dass sie nicht in die betreffende Handshake-Nachricht aufgenommen werden darf, oder die eine Erweiterung in ServerHello oder Certificate enthält, die nicht zuerst in den entsprechenden ClientHello oder CertificateRequest angeboten wurde.
Der Fehler führt zu einer geschlossenen TLS-Verbindung.
|
0 |
unrecognized_name
|
Wird von Servern gesendet, wenn es keinen Server gibt, der anhand des vom Client über die Erweiterung „server_name“ angegebenen Namens identifiziert werden kann. Siehe TLS-Erweiterungsdefinitionen. | 0 |
bad_certificate_status_response
|
Wird von Clients gesendet, wenn der Server über die Erweiterung „status_request“ eine ungültige oder inakzeptable OCSP-Antwort bereitstellt. Siehe TLS-Erweiterungsdefinitionen. Der Fehler führt zu einer geschlossenen TLS-Verbindung. | 0 |
load_balancer_configured_resource_limits_reached
|
Der Load-Balancer hat die konfigurierten Ressourcenlimits erreicht, z. B. die maximale Anzahl von Verbindungen. | 400, 500, 503 |
Fehlgeschlagene TLS-Verbindungslogeinträge
Wenn die TLS-Verbindung zwischen dem Client und dem Load-Balancer fehlschlägt, bevor ein Backend ausgewählt wird, werden die Fehler in den Logeinträgen aufgezeichnet. Sie können die Backend-Dienste mit unterschiedlichen Log-Abtastraten konfigurieren. Wenn eine TLS-Verbindung fehlschlägt, ist die Abtastrate für fehlgeschlagene TLS-Verbindungen die höchste Abtastrate für jeden Backend-Dienst. Wenn Sie beispielsweise zwei Back-End-Dienste mit einer Logging-Abtastrate als 0.3
und 0.5
konfiguriert haben, beträgt die Abtastrate für fehlgeschlagene TLS-Verbindungslogs 0.5
.
Sie können fehlgeschlagene TLS-Verbindungen anhand der folgenden Logeintragsdetails identifizieren:
- Typ des proxyStatus-Fehlers ist
tls_alert_received
,tls_certificate_error
,tls_protocol_error
oderconnection_terminated
. - Es gibt keine Back-End-Informationen.
Das folgende Beispiel zeigt einen fehlgeschlagenen TLS-Logeintrag mit dem Feld 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"
Mit den Logs interagieren
Sie können mithilfe der Cloud Logging API die externen Logs für Application Load Balancer nutzen. Die Logging API bietet Möglichkeiten zum interaktiven Filtern von Logs, für die bestimmte Felder festgelegt sind. Übereinstimmende Logs werden nach Cloud Logging, Cloud Storage, BigQuery oder Pub/Sub exportiert. Weitere Informationen zur Logging API finden Sie unter Cloud Logging API.
Monitoring
Der Load Balancer exportiert auch Monitoring-Daten nach Cloud Monitoring.
Sie können Monitoring-Messwerte für Folgendes verwenden:
- Bewertung der Konfiguration, Nutzung und Leistung eines Load-Balancers
- Fehlerbehebung
- Verbesserung der Ressourcenauslastung und Nutzerfreundlichkeit
Zusätzlich zu den vordefinierten Dashboards in Cloud Monitoring können Sie über die Cloud Monitoring API benutzerdefinierte Dashboards erstellen, Warnungen einrichten und Messwerte abrufen.
Benachrichtigungsrichtlinien definieren
Sie können Benachrichtigungsrichtlinien erstellen, um Messwerte zu beobachten und sich informieren zu lassen, wenn diese gegen eine Bedingung verstoßen.
-
Rufen Sie in der Google Cloud Console die Seite notifications Benachrichtigungen auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Wenn Sie keine Benachrichtigungskanäle erstellt haben und Benachrichtigungen erhalten möchten, klicken Sie auf Benachrichtigungskanäle bearbeiten und fügen Sie Benachrichtigungskanäle hinzu. Kehren Sie nach dem Hinzufügen der Kanäle zur Seite Benachrichtigungen zurück.
- Klicken Sie auf der Seite Benachrichtigungen auf Richtlinie erstellen.
- Maximieren Sie zum Auswählen des Messwerts das Menü Messwert auswählen und gehen Sie dann so vor:
- Um das Menü auf relevante Einträge zu beschränken, geben Sie in die Filterleiste
Regional External Application Load Balancer Rule
ein. Wenn nach dem Filtern des Menüs keine Ergebnisse angezeigt werden, deaktivieren Sie die Option Nur aktive Ressourcen und Messwerte anzeigen. - Wählen Sie als Ressourcentyp die Option Regionale externe Application Load Balancer-Regel aus.
- Wählen Sie eine Messwertkategorie und einen Messwert aus und klicken Sie dann auf Übernehmen.
- Um das Menü auf relevante Einträge zu beschränken, geben Sie in die Filterleiste
- Klicken Sie auf Weiter.
- Die Einstellungen auf der Seite Benachrichtigungstrigger konfigurieren bestimmen, wann die Benachrichtigung ausgelöst wird. Wählen Sie einen Bedingungstyp aus und geben Sie ggf. einen Schwellenwert an. Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien mit Messwertschwellen erstellen.
- Klicken Sie auf Weiter.
- Optional: Klicken Sie auf Benachrichtigungskanäle, um Benachrichtigungen zu Ihrer Benachrichtigungsrichtlinie hinzuzufügen. Wählen Sie im Dialogfeld einen oder mehrere Benachrichtigungskanäle aus dem Menü aus und klicken Sie dann auf OK.
- Optional: Aktualisieren Sie die Dauer bis zur automatischen Schließung von Vorfällen. Dieses Feld bestimmt, wann Monitoring Vorfälle ohne Messwertdaten schließt.
- Optional: Klicken Sie auf Dokumentation und geben Sie alle Informationen ein, die in einer Benachrichtigung angezeigt werden sollen.
- Klicken Sie auf Name der Benachrichtigung und geben Sie einen Namen für die Benachrichtigungsrichtlinie ein.
- Klicken Sie auf Richtlinie erstellen.
Benutzerdefinierte Cloud Monitoring-Dashboards definieren
Sie können benutzerdefinierte Cloud Monitoring-Dashboards für die Messwerte des Load Balancers erstellen:
Rufen Sie in der Google Cloud Console die Seite Monitoring auf.
Wählen Sie Dashboards > Dashboard erstellen aus.
Klicken Sie auf Diagramm hinzufügen und geben Sie dem Diagramm einen Namen.
Wählen Sie einen Ressourcentyp und einen Messwerttyp aus, um die anzuzeigende Zeitachse zu identifizieren:
- Klicken Sie im Abschnitt Ressource und Messwert auf das Diagramm und wählen Sie dann im Abschnitt Messwert auswählen eine der verfügbaren Optionen aus:
- Wählen Sie für einen regionalen externen Application Load Balancer den Ressourcentyp Regel für regionalen externen Application Load Balancer aus.
- Klicken Sie auf Anwenden.
Klicken Sie zum Angeben von Monitoring-Filtern auf Filter > Filter hinzufügen.
Klicken Sie auf Speichern.
Häufigkeit und Speicherung von Messwertberichten
Messwerte für die externen Application Load Balancer werden in einminütigen Abständen zu Cloud Monitoring exportiert. Monitoring-Daten werden sechs (6) Wochen beibehalten. Messwerte basieren auf Stichproben des Traffics. Die Stichprobenrate ist dynamisch und kann nicht angepasst werden. Im Dashboard werden Datenanalysen in Standardintervallen von einer Stunde, sechs Stunden, einem Tag, einer Woche und sechs Wochen bereitgestellt. Sie können manuell Analysen in jedem beliebigen Intervall von sechs Wochen bis zu einer Minute anfordern.
Messwerte überwachen
Sie können die folgenden Messwerte für externe Anwendungs-Load-Balancer überwachen.
Die folgenden Messwerte für regionale externe Anwendungs-Load-Balancer werden an Cloud Monitoring gemeldet.
Diese Messwerte werden mit dem Präfix loadbalancing.googleapis.com/
vorangestellt:
Messwert | Name | Beschreibung |
---|---|---|
Anzahl der Anfragen | https/external/regional/request_count |
Die Anzahl der Anfragen, die vom regionalen externen Anwendungs-Load-Balancer verarbeitet wurden. |
Anzahl der Anfragebyte | https/external/regional/request_bytes |
Die Anzahl der Byte, die als Anfragen von Clients an den regionalen externen Anwendungs-Load-Balancer gesendet wurden. |
Anzahl der Antwortbyte | https/external/regional/response_bytes |
Die Anzahl der Byte, die als Antworten vom regionalen externen Anwendungs-Load-Balancer an den Client gesendet wurden. |
Gesamtlatenzen | https/external/regional/total_latencies |
Eine Verteilung der Latenz in Millisekunden. Die Latenz wird von dem Zeitpunkt, an dem der Proxy das erste Byte der Anfrage empfängt, bis zu dem Zeitpunkt gemessen, an dem der Proxy das letzte Byte der Antwort sendet. |
Back-End-Latenzen | https/external/regional/backend_latencies |
Eine Verteilung der Latenz in Millisekunden. Die Latenz wird ab dem Zeitpunkt gemessen, an dem der Proxy das erste Byte der Anfrage an das Backend sendet, bis zu dem Zeitpunkt, an dem der Proxy das letzte Byte der Antwort vom Backend empfängt. |
Dimensionen für Messwerte filtern
Sie können Filter für Messwerte für externe Anwendungs-Load-Balancer anwenden.
Die Messwerte werden für jeden regionalen externen Anwendungs-Load-Balancer zusammengefasst. Sie können zusammengefasste Messwerte filtern, indem Sie die folgenden Dimensionen für resource.type="http_external_regional_lb_rule"
verwenden.
Attribut | Beschreibung |
---|---|
backend_name |
Der Name der Backend-Instanzgruppe oder der NEG. |
backend_scope |
Der Bereich des Back-Ends (entweder ein Zonenname oder ein Regionsname). Kann UNKNOWN sein, wenn backend_name unbekannt ist.
|
backend_scope_type |
Der Bereich des Back-Ends (REGION /ZONE ). Kann UNKNOWN sein, wenn backend_name unbekannt ist. |
backend_target_name |
Der Name des Back-Ends, das für die Anfrage ausgewählt wurde, auf Basis der Pfadregel oder Routingregel der URL-Zuordnung, die mit der Anfrage übereinstimmt. |
backend_target_type |
Der Typ des Backend-Ziels. Kann BACKEND_SERVICE sein oder UNKNOWN wird zurückgegeben, wenn das Backend nicht zugewiesen wurde.
|
backend_type |
Der Typ der Backend-Gruppe. Kann INSTANCE_GROUP oder NETWORK_ENDPOINT_GROUP sein, oder UNKNOWN , wenn das Backend nicht zugewiesen wurde.
|
forwarding_rule_name |
Der Name des Weiterleitungsregelobjekts. |
matched_url_path_rule |
Die Pfadregel oder Routingregel der URL-Zuordnung, die als Teil des URL-Zuordnungsschlüssels konfiguriert ist. Kann UNMATCHED oder UNKNOWN als Fallback sein.
|
network_name |
Der Name des VPC-Netzwerks des Load-Balancers. |
project_id |
Die Kennung des Google Cloud-Projekts, das dieser Ressource zugeordnet ist. |
region |
Die Region, in der der Load-Balancer definiert ist. |
target_proxy_name |
Der Name des Ziel-Proxy-Objekts, auf das die Weiterleitungsregel verweist. |
url_map_name |
Der Name des URL-Zuordnungsobjekts, das für die Auswahl eines Backend-Dienstes konfiguriert ist. |