区域级外部应用负载均衡器日志记录和监控

本文档介绍了如何配置 Cloud LoggingCloud Monitoring,并将其与区域级外部应用负载均衡器一起使用。

日志记录

您可以为外部应用负载均衡器后端服务启用和停用日志记录功能,还可以查看其日志。

您可以为每个后端服务启用或停用日志记录功能。您可以配置是记录所有请求还是记录随机采样的一小部分请求。

您必须确保没有适用于外部应用负载均衡器的日志排除项。如需了解如何验证是否允许 Cloud HTTP Load Balancer 日志,请参阅查看资源类型排除项

日志采样和收集

系统会对负载均衡器后端虚拟机 (VM) 实例处理的请求(及相应响应)进行采样。然后,系统会处理这些采样的请求以生成日志。您可以根据 logConfig.sampleRate 参数控制系统以日志条目形式发出的请求的比例。当 logConfig.sampleRate1.0 (100%) 时,表示系统会为所有请求生成日志并写入 Cloud Logging。

可选字段

日志记录包含必填字段和可选字段。记录的内容部分列出了哪些字段是可选字段,以及哪些是必填字段。所有必填字段始终包含在内。您可以自定义要保留哪些可选字段。

  • 如果您选择包括所有可选字段,则日志记录格式中的所有可选字段都将包含在日志中。向记录格式添加新的可选字段后,日志会自动包含新字段。

  • 如果您选择排除所有可选字段,则所有可选字段都将被省略。

  • 如果您选择自定义,则可以指定要包含的可选字段,例如 tls.protocol,tls.cipher

如需了解如何自定义可选字段,请参阅在新的后端服务上启用日志记录

针对新的后端服务启用日志记录功能

控制台

  1. 在 Google Cloud 控制台中,转到负载均衡页面。

    进入“负载均衡”

  2. 点击您的负载均衡器的名称。

  3. 点击修改

  4. 点击后端配置

  5. 选择创建后端服务

  6. 填写必填的后端服务字段。

  7. 日志记录部分,选中启用日志记录复选框。

  8. 设置采样率比例。您可以设置 0.01.0 的数字,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。默认值为 1.0

  9. 可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段

  10. 如需完成后端服务的修改,请点击更新

  11. 如需完成负载均衡器修改,请点击更新

gcloud:区域模式

使用 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

其中

  • --region 表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.0 值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。只有搭配使用 --enable-logging 参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为 0.0,那么效果将相当于停用日志记录功能。默认值为 1.0
  • --logging-optional 允许您指定要包括在日志中的可选字段:

    • INCLUDE_ALL_OPTIONAL:包括所有可选字段。

    • EXCLUDE_ALL_OPTIONAL(默认值):排除所有可选字段。

    • CUSTOM:包括您在 OPTIONAL_FIELDS 中指定的可选字段的自定义列表。

  • --logging-optional-fields 允许您以逗号分隔列表的形式指定要包括在日志中的可选字段。

    例如,仅当 LOGGING_OPTIONAL_MODE 设置为 CUSTOM 时才能设置 tls.protocol,tls.cipher

针对现有后端服务启用日志记录功能

控制台

  1. 在 Google Cloud 控制台中,转到负载均衡页面。

    进入“负载均衡”

  2. 点击您的负载均衡器的名称。

  3. 点击修改

  4. 点击后端配置

  5. 点击后端服务旁边的 修改

  6. 日志记录部分,选中启用日志记录复选框。

  7. 采样率字段中,设置采样概率。您可以设置 0.01.0 的数字,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。默认值为 1.0

  8. 可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段

  9. 如需完成后端服务的修改,请点击更新

  10. 如需完成负载均衡器修改,请点击更新

gcloud:区域模式

使用 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

其中

  • --region 表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.0 值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。只有搭配使用 --enable-logging 参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为 0.0,那么效果将相当于停用日志记录功能。默认值为 1.0
  • --logging-optional 允许您指定要包括在日志中的可选字段。

    • INCLUDE_ALL_OPTIONAL:包括所有可选字段。

    • EXCLUDE_ALL_OPTIONAL(默认值):排除所有可选字段。

    • CUSTOM:包括您在 OPTIONAL_FIELDS 中指定的可选字段的自定义列表。

  • --logging-optional-fields 允许您以逗号分隔列表的形式指定要包括在日志中的可选字段。

    例如 tls.protocol,tls.cipher。只有当 LOGGING_OPTIONAL_MODE 设置为 CUSTOM 时才能设置此项。

针对现有后端服务停用或修改日志记录功能

控制台

  1. 在 Google Cloud 控制台中,转到负载均衡页面。

    进入“负载均衡”

  2. 点击您的负载均衡器的名称。

  3. 点击修改

  4. 点击后端配置

  5. 点击后端服务旁边的 修改

  6. 如需完全停用日志记录功能,请在日志记录部分中清除启用日志记录复选框。

  7. 如果要保持启用日志记录功能,可以设置其他采样率比例。您可以设置 0.01.0 的数字,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。默认值为 1.0。 例如,0.2 表示 20% 的抽样请求会生成日志。

  8. 如需完成后端服务的修改,请点击更新

  9. 如需完成负载均衡器修改,请点击更新

gcloud:区域模式

使用 gcloud compute backend-services update 命令停用后端服务的日志记录功能。

完全停用日志记录功能

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

其中

  • --region 表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。
  • --no-enable-logging 表示对该后端服务停用日志记录功能。

修改日志采样率

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

查看日志

HTTP(S) 日志将依次按照转发规则网址映射编入索引。

如需查看日志,请进入 Logs Explorer 页面:

转到日志浏览器

  • 如需查看所有日志,请在资源过滤条件菜单中选择 Cloud HTTP 负载均衡器 > 所有转发规则

  • 如需查看一条转发规则的日志,请选择一个转发规则名称。

  • 如需查看一个网址映射的日志,请选择一条转发规则,然后选择一个网址映射。

布尔值类型的日志字段通常仅在其值为 true 时才会显示。如果某个布尔值字段的值为 false,则日志中将不会出现该字段。

系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。 对于区域级外部应用负载均衡器,您可以使用资源日志 (resource.type="http_external_regional_lb_rule") 导出基于日志的指标

记录的内容

外部应用负载均衡器日志条目包含对监控和调试 HTTP(S) 流量有用的信息。日志记录包含必填字段,这些字段是每个日志记录的默认字段。日志记录包含可选字段,用于添加有关 HTTP(S) 流量的其他信息。可以省略可选字段,以节省存储费用。

某些日志字段采用多字段格式,在给定字段中包含多段数据。例如,tls 字段采用 TlsDetails 格式,它在单个字段中包含 TLS 协议和 TLS 加密。以下记录格式表介绍了这些采用多字段格式的字段。

字段 字段格式 字段类型:必填或可选 说明
severity
insertID
timestamp
logName
LogEntry 必填 日志条目中描述的常规字段。
httpRequest HttpRequest 必需 用于记录 HTTP 请求的通用协议。
resource MonitoredResource 必填

MonitoredResource 是与日志条目关联的资源类型。

MonitoredResourceDescriptor 使用类型名称和一组标签来描述 MonitoredResource 对象的架构。如需了解详情,请参阅资源标签

jsonPayload object (Struct format) 必填 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
  • authzPolicyInfo
字符串 必需

proxyStatus 字段包含一个字符串,用于指定区域级外部应用负载均衡器返回 HttpRequest.status 的原因。

如果值为空字符串,则系统不会记录该字段。如果代理或后端未返回错误,或者错误代码不是 04XX5XX,则可能会发生这种情况。

proxyStatus 字段包含两个部分:

AuthzPolicyInfo 必填 authzPolicyInfo 字段用于存储与授权政策结果相关的信息。此信息仅适用于启用了 授权政策的区域级外部应用负载平衡器。如需了解详情,请参阅 授权政策记录的内容
TlsDetails 可选 tls 字段包含 TlsDetails,用于指定客户端与区域级外部应用负载均衡器之间的连接的 TLS 元数据。仅当客户端使用 TLS/SSL 加密时,此字段才可用。
MtlsDetails 可选 mtls 字段包含 MtlsDetails 值,用于指定客户端与区域级外部应用负载均衡器之间的连接的 mTLS 元数据。 仅当负载均衡器使用前端双向 TLS (mTLS) 时,此字段才可用。

TlsDetails 字段格式

字段 字段格式 字段类型:必填或可选 说明
protocol 字符串 可选 客户端用于与负载均衡器建立连接的 TLS 协议。可能的值包括 TLS 1.0, 1.1, 1.2, 1.3QUIC。如果客户端未使用 TLS/SSL 加密,则此值设置为 NULL
加密方式 字符串 可选 客户端用于与负载均衡器建立连接的 TLS 加密。如果客户端未使用 HTTP(S) 或客户端未使用 TLS/SSL 加密,则此值设置为 NULL

MtlsDetails 字段格式

字段 字段格式 字段类型:必填或可选 说明
clientCertPresent 布尔值 可选

如果客户端在 TLS 握手期间提供了证书,则为 true;否则为 false

clientCertChainVerified 布尔值 可选

如果根据配置的 TrustStore 验证了客户端证书链,则为 true;否则为 false

clientCertError 字符串 可选

代表错误情况的预定义字符串。如需详细了解错误字符串,请参阅 mTLS 客户端验证模式

clientCertSha256Fingerprint 字符串 可选

客户端证书的 Base64 编码 SHA-256 指纹。

clientCertSerialNumber 字符串 可选

客户端证书的序列号。如果序列号长度超过 50 字节,则将字符串 client_cert_serial_number_exceeded_size_limit 添加到 client_cert_error,并将序列号设置为空字符串。

clientCertValidStartTime 字符串 可选

在此时间戳(RFC 3339 日期字符串格式)之前,客户端证书无效。 例如 2022-07-01T18:05:09+00:00

clientCertValidEndTime 字符串 可选

在此时间戳(RFC 3339 日期字符串格式)之后,客户端证书无效。 例如 2022-07-01T18:05:09+00:00

clientCertSpiffeId 字符串 可选

主题备用名称 (SAN) 字段中的 SPIFFE ID。如果值无效或超过 2048 字节,则 SPIFFE ID 设置为空字符串。

如果 SPIFFE ID 长度超过 2048 字节,则将字符串 client_cert_spiffe_id_exceeded_size_limit 添加到 client_cert_error

clientCertUriSans 字符串 可选

URI 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。 client_cert_uri_sans 字段中不包含 SPIFFE ID。

如果 client_cert_uri_sans 字段长度超过 512 字节,则将字符串 client_cert_uri_sans_exceeded_size_limit 添加到 client_cert_error,并将英文逗号分隔列表设置为空字符串。

clientCertDnsnameSans 字符串 可选

DNSName 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。

如果 client_cert_dnsname_sans 字段长度超过 512 字节,则将字符串 client_cert_dnsname_sans_exceeded_size_limit 添加到 client_cert_error,并将英文逗号分隔列表设置为空字符串。

clientCertIssuerDn 字符串 可选

证书中采用 Base64 编码的完整“颁发者”字段。

如果 client_cert_issuer_dn 字段长度超过 512 字节,则将字符串 client_cert_issuer_dn_exceeded_size_limit 添加到 client_cert_error,并将 client_cert_issuer_dn 设置为空字符串。

clientCertSubjectDn 字符串 可选

证书中采用 Base64 编码的完整“主题”字段。

如果 client_cert_subject_dn 字段长度超过 512 字节,则将字符串 client_cert_subject_dn_exceeded_size_limit 添加到 client_cert_error,并将 client_cert_subject_dn 设置为空字符串。

clientCertLeaf 字符串 可选

已建立的 mTLS 连接(证书在其中通过了验证)的客户端叶证书。证书编码符合 RFC 9440 标准:二进制 DER 证书使用 Base64 编码(不含换行符、空格或 Base64 字母表之外的其他字符),两侧都用英文冒号分隔。

如果 client_cert_leaf 超过 16 KB(未编码),则将字符串 client_cert_validated_leaf_exceeded_size_limit 添加到 client_cert_error,并将 client_cert_leaf 设置为空字符串。

clientCertChain 字符串 可选

已建立的 mTLS 连接(客户端证书在其中通过了验证)的客户端证书链的英文逗号分隔证书列表(按标准 TLS 顺序排列),不包括叶证书。证书编码符合 RFC 9440 标准。

如果 client_cert_leafclient_cert_chain 的总大小在 Base64 编码之前超过 16 KB,则将字符串 client_cert_validated_chain_exceeded_size_limit 添加到 client_cert_error,并将 client_cert_chain 设置为空字符串。

资源标签

下表列出了 resource.type="http_external_regional_lb_rule" 的资源标签。

字段 类型 说明
backend_name 字符串 后端实例组或网络端点组 (NEG) 的名称。 但是,对于失败的 TLS 连接,标签为空。
backend_scope 字符串 后端的范围(可以是可用区名称或区域名称)。如果 backend_name 未知,该字段可能为 UNKNOWN
backend_scope_type 字符串 后端的范围 (REGION/ZONE)。如果 backend_name 未知,该字段可能为 UNKNOWN
backend_target_name 字符串 根据与请求匹配的网址映射路径规则或路由规则,为处理请求而选择的后端的名称。
backend_target_type 字符串 后端目标的类型。可以是 BACKEND_SERVICE;如果未分配后端,则系统会返回 UNKNOWN
backend_type 字符串 后端组的类型。可以是 INSTANCE_GROUPNETWORK_ENDPOINT_GROUP;如果未分配后端,则系统会返回 UNKNOWN
forwarding_rule_name 字符串 转发规则对象的名称。
matched_url_path_rule 字符串 作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是 UNMATCHEDUNKNOWN(用作回退)。
  • UNMATCHED 表示因不符合网址路径规则而使用默认路径规则的请求。
  • UNKNOWN 表示内部错误或 TLS 连接失败。
network_name 字符串 负载均衡器的 VPC 网络名称。
project_id 字符串 与相应资源关联的 Google Cloud 项目的标识符。
region 字符串 在其中定义负载均衡器的区域。
target_proxy_name 字符串 转发规则引用的目标代理对象的名称。
url_map_name 字符串 配置为选择一项后端服务的网址映射对象的名称。 对于失败的 TLS 连接,此字段为空。

proxyStatus 错误字段

proxyStatus 字段包含一个字符串,用于指定负载均衡器返回错误的原因。proxyStatus 字段包含两个部分:proxyStatus errorproxyStatus details。本部分介绍了 proxyStatus error 字段支持的字符串。

proxyStatus 错误字段适用于以下负载均衡器:

  • 区域级外部应用负载均衡器
  • 跨区域内部应用负载均衡器
  • 区域级内部应用负载均衡器
proxyStatus 错误 说明 通用的附带响应代码
destination_unavailable 负载均衡器认为后端不可用。例如,最近尝试与后端通信失败,或者健康检查可能导致失败。 500、503
connection_timeout 负载均衡器尝试打开与后端的连接时超时。 504
connection_terminated

在收到完整响应之前,负载均衡器与后端的连接已终结。

在出现以下任一情况时,系统会返回此 proxyStatus error

  • 在收到完整响应之前,负载均衡器与后端的连接已终结。
  • TLS 连接在 SSL 握手时失败,并且客户端未与负载均衡器建立连接。

0、502、503
connection_refused 负载均衡器与后端的连接被拒绝。 502、503
connection_limit_reached

负载均衡器配置为限制其与后端的连接数,并且超出了该限制。

在出现以下任一情况时,系统会返回此 proxyStatus error

  • 如果任何后端处于维护模式,则流量无法路由到相应后端。
  • 如果请求在本地受速率限制。
  • Envoy 正在处理内存不足等错误情况。
502、503
destination_not_found 负载均衡器无法确定要用于此请求的适当后端。例如,可能未配置后端。 500、404
dns_error 负载均衡器在尝试查找后端主机名的 IP 地址时遇到 DNS 错误。 502、503
proxy_configuration_error 负载均衡器遇到内部错误。 500
proxy_internal_error 负载均衡器遇到内部错误。 0、500、502
proxy_internal_response 负载均衡器在未尝试连接到后端的情况下生成响应。 任何响应代码,具体取决于问题类型。例如,410 响应代码表示后端因欠费而不可用。
http_response_timeout 负载均衡器在等待来自后端的完整响应时已达到配置的后端服务超时限制。 504、408
http_request_error 负载均衡器遇到 HTTP 4xx 错误,表明客户端请求存在问题。 400、403、405、406、408、411、413、414、415、416、417 或 429
http_protocol_error 负载均衡器在与后端通信时遇到 HTTP 协议错误。 502
tls_protocol_error 负载均衡器在 TLS 握手期间遇到 TLS 错误。 0
tls_certificate_error 负载均衡器在启用了 mTLS 情况下验证服务器或客户端提供的证书时遇到错误。 0
tls_alert_received 负载均衡器在 TLS 握手期间遇到严重 TLS 提醒。 0

proxyStatus 详细信息字段

proxyStatus 字段包含一个字符串,用于指定负载均衡器返回错误的原因。proxyStatus 字段包含两个部分:proxyStatus errorproxyStatus detailsproxyStatus details 字段为可选字段,仅在提供更多信息时才会显示。本部分介绍了 proxyStatus details 字段支持的字符串。

proxyStatus 详细信息字段适用于以下负载均衡器:

  • 区域级外部应用负载均衡器
  • 区域级内部应用负载均衡器
  • 跨区域内部应用负载均衡器
proxyStatus 详细信息 说明 通用的附带响应代码
client_disconnected_before_any_response 在负载均衡器发送任何响应之前,与客户端的连接已中断。 0
backend_connection_closed 后端意外关闭与负载均衡器的连接。如果负载均衡器正在向另一个实体(例如 TCP 超时短于负载均衡器 10 分钟 [600 秒] 超时的第三方应用)发送流量,可能会发生这种情况。 502
failed_to_connect_to_backend 负载均衡器无法连接到后端。此失败包括连接阶段的超时。 503
failed_to_pick_backend 负载均衡器无法挑选运转状况良好的后端来处理请求。 502
response_sent_by_backend HTTP 请求已成功代理到后端,响应由后端返回。 HTTP 响应代码由后端上运行的软件设置。
client_timed_out

负载均衡器和客户端之间的连接超出了空闲超时。

如需详细了解区域级外部应用负载均衡器,请参阅客户端 HTTP keepalive 超时。如需详细了解内部应用负载均衡器,请参阅客户端 HTTP keepalive 超时
0、408
backend_timeout

后端在生成响应时超时。

502
http_protocol_error_from_backend_response 后端响应包含 HTTP 协议错误。 501、502
http_protocol_error_from_request 客户端请求包含 HTTP 协议错误。 400、503
http_version_not_supported HTTP 协议版本不受支持。目前仅支持 HTTP 0.9、1.0、1.1 和 2.0。 400
handled_by_identity_aware_proxy 此响应由 Identity-Aware Proxy (IAP) 在允许访问之前验证客户端身份期间生成。 200、302、400、401、403、500、502
invalid_request_headers

从客户端收到的 HTTP 请求标头包含至少一个不符合适用 HTTP 规范的字符。

例如,包含双引号 (") 或标准 ASCII 范围以外的任何字符(即大于等于 0x80 的任何字节)的标头字段名称无效。

如需了解详情,请参阅以下主题:

400、404
ip_detection_failed 无法检测到原始 IP 地址。 任何可能的响应代码,具体取决于失败的性质。值必须介于 400 到 599 之间。
request_body_too_large HTTP 请求正文超出了负载均衡器支持的长度上限。 413、507
request_header_timeout 由于负载均衡器在 5 秒内未收到完整请求,因此请求标头超时。 408、504
denied_by_security_policy 负载均衡器因 Google Cloud Armor 安全政策而拒绝了此请求。 403
throttled_by_security_policy 该请求被 Google Cloud Armor 节流规则阻止。 429
client_cert_chain_invalid_eku 客户端证书或其颁发者没有包含 clientAuth 的扩展密钥用途。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_chain_max_name_constraints_exceeded 为验证提供的中间证书有超过 10 个名称限制。 如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_invalid_rsa_key_size 客户端叶或中间证书的 RSA 密钥大小无效。 如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_not_provided 客户端在握手期间未提供请求的证书。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_pki_too_large 用于验证的 PKI 具有三个以上的中间证书,它们共享相同的 SubjectSubject Public Key Info。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_unsupported_elliptic_curve_key 客户端证书或中间证书使用的是不受支持的椭圆曲线。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_unsupported_key_algorithm 客户端证书或中间证书使用的是非 RSA 或非 ECDSA 算法。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_validation_failed 客户端证书未通过 TrustConfig 验证。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_validation_not_performed 您在未设置 TrustConfig 的情况下配置了双向 TLS。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_validation_search_limit_exceeded 在尝试验证证书链时达了深度或迭代限制。如需了解详情,请参阅关闭连接时记录的错误 0
client_cert_validation_timed_out 验证证书链时超出了时间限制(200 毫秒)。如需了解详情,请参阅关闭连接时记录的错误 0
tls_version_not_supported 系统可以识别 TLS 协议版本,但不支持该版本。该错误会导致 TLS 连接关闭。 0
unknown_psk_identity 如果需要建立 PSK 密钥,但客户端未提供可接受的 PSK 身份,则服务器会发送此错误。该错误会导致 TLS 连接关闭。 0
no_application_protocol 当客户端“application_layer_protocol_negotiation”扩展仅通告服务器不支持的协议时,服务器会发送此错误。请参阅 TLS 应用层协议协商扩展。该错误会导致 TLS 连接关闭。 0
no_certificate 未找到任何证书。该错误会导致 TLS 连接关闭。 0
bad_certificate 证书无效,或者包含无法验证的签名。该错误会导致 TLS 连接关闭。 0
unsupported_certificate 证书的类型不受支持。该错误会导致 TLS 连接关闭。 0
certificate_revoked 证书签名者已撤消该证书。该错误会导致 TLS 连接关闭。 0
certificate_expired 证书已过期或无效。该错误会导致 TLS 连接关闭。 0
certificate_unknown 处理证书时出现了一些未指定的问题,导致证书不可接受。该错误会导致 TLS 连接关闭。 0
unknown_ca 收到了有效的证书链或部分链,但证书未被接受,因为找不到 CA 证书或者无法与已知的信任锚匹配。该错误会导致 TLS 连接关闭。 0
unexpected_message 不当消息,例如收到了错误的握手消息或过早的应用数据。该错误会导致 TLS 连接关闭。 0
bad_record_mac 收到了无法去保护的记录。该错误会导致 TLS 连接关闭。 0
record_overflow 收到了长度超过 214+256 字节的 TLSCiphertext 记录,或者记录解密为长度超过 214 字节(或某个其他协商的限制)的 TLSPlaintext 记录。该错误会导致 TLS 连接关闭。 0
handshake_failure 在提供可用选项的情况下,无法协商可接受的一组安全参数。该错误会导致 TLS 连接关闭。 0
illegal_parameter 握手中的字段不正确或与其他字段不一致。该错误会导致 TLS 连接关闭。 0
access_denied 已收到有效的证书或 PSK,但应用访问权限控制时,客户端未继续协商。该错误会导致 TLS 连接关闭。 0
decode_error 由于某些字段超出了指定范围或消息长度不正确,因此无法对消息进行解码。该错误会导致 TLS 连接关闭。 0
decrypt_error 握手(非记录层)加密操作失败,包括无法正确验证签名,或者无法正确验证已完成的消息或 PSK Binder。该错误会导致 TLS 连接关闭。 0
insufficient_security 由于服务器需要的参数比客户端支持的参数更安全,因此协商失败。该错误会导致 TLS 连接关闭。 0
inappropriate_fallback 服务器在响应来自客户端的无效连接重试尝试时发送此错误。该错误会导致 TLS 连接关闭。 0
user_cancelled 用户由于与协议失败无关的某种原因而取消握手。该错误会导致 TLS 连接关闭。 0
missing_extension 由接收握手消息的端点发送此错误,该消息不包含必须为提供的 TLS 版本或其他协商参数发送的扩展。该错误会导致 TLS 连接关闭。 0
unsupported_extension 由接收任何握手消息的端点发送此错误,该消息包含已知被禁止纳入给定握手消息中的扩展,或者包含并非第一次在相应 ClientHelloCertificateRequest 中提供的 ServerHelloCertificate 中的任何扩展。 该错误会导致 TLS 连接关闭。 0
unrecognized_name 当不存在可以由客户端通过“server_name”扩展提供的名称来标识的服务器时,服务器会发送此错误。请参阅 TLS 扩展定义 0
bad_certificate_status_response 当服务器通过“status_request”扩展提供无效或不可接受的 OCSP 响应时,客户端会发送此错误。请参阅 TLS 扩展定义。 该错误会导致 TLS 连接关闭。 0
load_balancer_configured_resource_limits_reached 负载均衡器达到了配置的资源限制,例如连接数上限。 400、500、503

失败的 TLS 连接日志条目

如果在选择任何后端之前客户端与负载均衡器之间的 TLS 连接失败,则日志条目会记录错误。您可以为后端服务配置不同的日志采样率。TLS 连接失败时,失败的 TLS 连接日志采样率是任何后端服务的最高采样率。例如,如果您对两个后端服务将日志记录采样率配置为 0.30.5,则失败的 TLS 连接日志采样率为 0.5

您可以通过检查以下日志条目详细信息来识别失败的 TLS 连接:

  • proxyStatus 错误类型为 tls_alert_receivedtls_certificate_errortls_protocol_errorconnection_terminated
  • 没有后端信息。

以下示例显示了包含 proxyStatus error 字段的 TLS 日志条目:

   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"
  

授权政策请求日志

负载均衡器日志条目 JSON 载荷中的 authz_info 对象包含有关授权政策的信息。您可以为这些政策允许或拒绝的流量配置基于日志的指标。查看更多授权政策日志详情

字段 类型 说明
authz_info.policies[] 对象 与请求匹配的政策的列表。
authz_info.policies[].name 字符串 与请求匹配的授权政策的名称。
名称为空的原因如下:
  • 没有与请求匹配的 ALLOW 政策,拒绝请求。
  • 没有与请求匹配的 DENY 政策,允许请求。
authz_info.policies[].result 枚举 结果可以是 ALLOWEDDENIED
authz_info.policies[].details 字符串 详细信息包括以下内容:
  • 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 枚举 结果可以是 ALLOWEDDENIED

与日志交互

您可以使用 Cloud Logging API 与外部应用负载均衡器日志进行交互。Logging API 提供了多种方法来以交互方式过滤包含特定字段集的日志。它会将匹配的日志导出到 Cloud Logging、Cloud Storage、BigQuery 或 Pub/Sub。如需详细了解 Logging API,请参阅 Cloud Logging API 概览

监控

负载均衡器会将监控数据导出到 Cloud Monitoring

您可以使用监控指标执行以下操作:

  • 评估负载均衡器的配置、使用情况和性能
  • 排查问题
  • 提高资源利用率和改善用户体验

除了 Cloud Monitoring 中的预定义信息中心以外,您还可以通过 Cloud Monitoring API 创建自定义信息中心、设置提醒和查询指标。

定义提醒政策

您可以创建提醒政策来监控指标的值,当这些指标违反条件时便会通知您。

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
  3. 提醒页面中,点击创建政策
  4. 如需选择指标,请展开选择指标菜单,然后执行以下操作:
    1. 如需将菜单限制为相关条目,请在过滤栏中输入 Regional External Application Load Balancer Rule。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。
    2. 对于资源类型,请选择区域级外部应用负载均衡器规则
    3. 选择指标类别指标,然后选择应用
  5. 点击下一步
  6. 配置提醒触发器页面中的设置决定了何时触发提醒。 选择条件类型,并在必要时指定阈值。如需了解详情,请参阅创建指标阈值提醒政策
  7. 点击下一步
  8. 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定
  9. 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
  10. 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
  11. 点击提醒名称,然后输入提醒政策的名称。
  12. 点击创建政策
如需了解详情,请参阅提醒政策

定义 Cloud Monitoring 自定义信息中心

您可以为负载均衡器的指标创建自定义 Cloud Monitoring 信息中心:

  1. 在 Google Cloud 控制台中,前往 Monitoring 页面。

    进入 Monitoring

  2. 选择信息中心 > 创建信息中心

  3. 点击添加图表,然后为图表输入一个标题。

  4. 如需确定要显示的时序,请选择资源类型和指标类型:

    1. 资源和指标部分,点击图表,然后在选择指标部分,从可用选项中进行选择:
    2. 对于区域级外部应用负载均衡器,请选择资源类型区域级外部应用负载均衡器规则
    3. 点击应用
  5. 如需指定监控过滤条件,请依次点击过滤条件 > 添加过滤条件

  6. 点击保存

指标报告频率和保留

系统会每隔 1 分钟将外部应用负载均衡器的指标批量导出到 Cloud Monitoring 中。监控数据会保留六 (6) 周。

默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 1 分钟到 6 周的范围内手动指定分析时间间隔。

监控指标

您可以监控外部应用负载均衡器的以下指标。

区域级外部应用负载均衡器的以下指标会报告给 Cloud Monitoring。这些指标以 loadbalancing.googleapis.com/ 开头。

指标 名称 说明
请求数 https/external/regional/request_count 区域级外部应用负载均衡器处理的请求数
请求字节数 https/external/regional/request_bytes 以请求形式从客户端发送到区域级外部应用负载均衡器的字节数。
响应字节数 https/external/regional/response_bytes 以响应形式从区域级外部应用负载均衡器发送到客户端的字节数。
总延迟时间 https/external/regional/total_latencies 延迟时间的分布(以毫秒为单位)。延迟时间从代理收到请求的第一个字节开始计算,直到代理发送响应的最后一个字节为止。
后端延迟时间 https/external/regional/backend_latencies 延迟时间的分布(以毫秒为单位)。延迟时间从代理向后端发送请求的第一个字节开始计算,直到代理收到来自后端的响应的最后一个字节为止。

过滤指标的维度

您可以为外部应用负载均衡器的指标应用过滤条件。

系统会为每个区域级外部应用负载均衡器汇总指标。您可以使用以下维度对 resource.type="http_external_regional_lb_rule" 过滤汇总的指标。

属性 说明
backend_name 后端实例组或网络端点组 (NEG) 的名称。
backend_scope 后端的范围(可以是可用区名称或区域名称)。如果 backend_name 未知,该字段可能为 UNKNOWN
backend_scope_type 后端的范围 (REGION/ZONE)。如果 backend_name 未知,该字段可能为 UNKNOWN
backend_target_name 根据与请求匹配的网址映射路径规则或路由规则,为处理请求而选择的后端的名称。
backend_target_type 后端目标的类型。可以是 BACKEND_SERVICE;如果未分配后端,则系统会返回 UNKNOWN
backend_type 后端组的类型。可以是 INSTANCE_GROUPNETWORK_ENDPOINT_GROUP;如果未分配后端,则系统会返回 UNKNOWN
forwarding_rule_name 转发规则对象的名称。
matched_url_path_rule 作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是 UNMATCHEDUNKNOWN(用作回退)。
  • UNMATCHED 表示与任何网址路径规则均不匹配的请求,因此它使用默认路径规则。
  • UNKNOWN 表示内部错误。
network_name 负载均衡器的 VPC 网络名称。
project_id 与相应资源关联的 Google Cloud 项目的标识符。
region 在其中定义负载均衡器的区域。
target_proxy_name 转发规则引用的目标代理对象的名称。
url_map_name 配置为选择一项后端服务的网址映射对象的名称。

后续步骤