本文档提供了您了解内部应用负载均衡器的日志记录和监控指标所需的信息。 区域级内部应用负载均衡器和跨区域内部应用负载均衡器的日志记录和监控指标相同。
日志记录
您可以逐个后端服务地启用日志记录功能。一个内部应用负载均衡器的网址映射可引用多个后端服务。根据您的具体配置,您可能需要为多个后端服务启用日志记录功能。
日志采样和收集
Google Cloud 会对离开和进入负载均衡器后端虚拟机 (VM) 实例的数据包进行采样。系统会处理这些采样数据包以生成日志。
不会对每个数据包都进行采样。Google Cloud 会根据物理主机上的流量大小对可变的数据包子集进行采样。可能达到的数据包最低采样率为 1/1,024。采样率由 Google Cloud 动态控制。您无法调整采样率。
数据包采样通过以下方式与防火墙规则进行交互:
- 在应用出站防火墙规则之前对数据包进行采样。
- 在应用入站防火墙规则之后对数据包进行采样。
数据包采样后,Google Cloud 会按照以下过程处理采样的数据包:
聚合:采样数据包在五秒间隔内进行聚合,以生成单个流条目。
可配置(次要)日志采样:这是第二个采样流程,用于采样流。您可以根据 logConfig.sampleRate 参数控制系统以日志条目形式发出的流条目的比例。当
logConfig.sampleRate
为1.0
(100%) 时,表示系统会处理所有采样的数据包。写入 Logging:日志条目会写入 Cloud Logging。
可选字段
日志记录包含必填字段和可选字段。记录的内容部分列出了哪些字段是可选字段,以及哪些是必填字段。所有必填字段始终包含在内。您可以自定义要保留哪些可选字段。
如果您选择包括所有可选字段,则日志记录格式中的所有可选字段都将包含在流日志中。向记录格式添加新的可选字段后,流日志会自动包含新字段。
如果您选择排除所有可选字段,则所有可选字段都将被省略。
如果您选择自定义,则可以指定要包含的可选字段,例如
tls.protocol,tls.cipher
。
如需了解如何自定义可选字段,请参阅在现有后端服务上启用日志记录。
针对现有后端服务启用日志记录功能
对于区域级内部应用负载均衡器,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
点击后端服务旁边的
修改。点击高级配置(会话亲和性、连接排空超时时间)。
点击启用日志记录。
设置采样率比例。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段。
如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud
如需更新后端服务以启用日志记录功能,请使用 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
其中
--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受介于0.0
到1.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
。
对于跨区域内部应用负载均衡器,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
点击后端服务旁边的
修改。点击高级配置(会话亲和性、连接排空超时时间)。
点击启用日志记录。
设置采样率比例。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段。
如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud
如需更新后端服务以启用日志记录功能,请使用 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
其中
--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受介于0.0
到1.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
。
为后端服务启用日志记录功能后,每个 HTTP(S) 请求都会通过 Cloud Logging 记录到日志中。
如何查看日志
如需查看日志,请在 Google Cloud 控制台中转到日志浏览器页面。
内部应用负载均衡器日志会相继按网络和区域编入索引。
- 如需查看所有内部应用负载均衡器的日志,请在第一个下拉菜单中选择内部应用负载均衡器规则。
- 如需仅查看一个网络的日志,请选择内部应用负载均衡器规则,然后选择网络的名称。
- 如需仅查看网络中一个区域的日志,请选择内部应用负载均衡器规则 >
NETWORK
>REGION
。
布尔值类型的日志字段通常仅在其值为 true
时才会显示。如果某个布尔值字段的值为 false
,则日志中将不会出现该字段。
系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。
您可以为资源日志 (resource.type="internal_http_lb_rule"
) 配置导出基于日志的指标。这些指标是基于“内部应用负载均衡器规则”资源创建的,您可以在 Cloud Monitoring 信息中心下找到该资源:
记录的内容
内部应用负载均衡器日志条目包含对监控和调试 HTTP(S) 流量有用的信息。日志记录包含必填字段(这些字段是每个日志记录的默认字段)和可选字段(用于添加有关 HTTP(S) 流量的其他信息)。可以省略可选字段,以节省存储费用。 日志条目包含以下类型的信息:
- 大多数 Google Cloud 日志中显示的常规信息,例如严重性、项目 ID、项目编号和时间戳(如 LogEntry 所述)。
- HttpRequest 日志字段。
某些日志字段采用多字段格式,在给定字段中包含多段数据。例如,tls
字段采用 TlsDetails
格式,它在单个字段中包含 TLS 协议和 TLS 加密。以下记录格式表介绍了这些采用多字段格式的字段。
字段 | 类型 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
logName
|
字符串 | 必填 |
此日志条目所属日志的资源名称。 采用 "projects/PROJECT_ID/logs/requests" 的形式。 |
timestamp
|
字符串 | 必填 | 请求的开始时间。 |
severity
|
LogSeverity 格式 | 必填 |
日志条目的严重性。默认值为 LogSeverity.DEFAULT 。 |
httpRequest
|
HttpRequest 对象 | 必填 | 一个 HttpRequest proto,用于描述要在日志中记录的 HTTP(S) 请求。 |
trace
|
字符串 | 必填 |
与日志条目关联的跟踪记录的资源名称(如果有)。如果其中包含相对资源名称,则假定该名称相对于 https://tracing.googleapis.com 。示例:projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824 。内部应用负载均衡器不支持此字段。 |
spanId
|
字符串 | 必填 |
与日志条目相关联的跟踪记录内的 Span ID。对于 Trace span,这与 Trace API v2 所用格式相同:一个 8 字节数组的十六进制编码,长度为 16 个字符,例如 000000000000004a 。内部应用负载均衡器不支持此字段。 |
resource
|
MonitoredResource 对象 | 必填 |
生成此日志条目的受监控的资源。
例如,内部应用负载均衡器的受监控资源描述符的资源类型为 |
jsonPayload | 对象 (结构体格式) | 必填 | 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:
|
字符串 | 必填 |
如果值为空字符串,则系统不会记录该字段。如果代理或后端未返回错误,或者错误代码不是
|
|
字符串 | 必填 | backendTargetProjectNumber 字段包含用于标识后端服务或后端存储桶所有者的项目编号。 |
|
字符串 | 必填 | serviceDirectoryService 字段包含配置了 Cloud FIT 故障的 Service Directory 服务的名称。 |
|
字符串 | 必填 | cloudFitExperiment 字段包含 Cloud FIT 实验的名称。 |
|
字符串 | 必填 | cloudFitFault 字段包含此请求路径中由 Cloud FIT 故障实验注入的故障的名称。 |
|
ServiceExtensionInfo | 必填 | serviceExtensionInfo 字段存储有关从负载均衡器到 Service Extensions 的 gRPC 流的信息。有关详情,请参阅
系统针对附加宣传信息记录的内容。 |
|
TlsDetails | 可选 | tls 字段包含 TlsDetails,用于指定客户端与内部应用负载均衡器之间的连接的 TLS 元数据。仅当客户端使用 TLS/SSL 加密时,此字段才可用。 |
|
MtlsDetails | 可选 | mtls 字段包含 MtlsDetails 值,用于指定客户端与内部应用负载均衡器之间的连接的 mTLS 元数据。仅当负载均衡器使用前端双向 TLS (mTLS) 时,此字段才可用。
|
TlsDetails 字段格式
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
protocol | 字符串 | 可选 | 客户端用于与负载均衡器建立连接的 TLS 协议。可能的值包括 TLS 1.0, 1.1, 1.2,
1.3 或 QUIC 。如果客户端未使用 TLS/SSL 加密,则此值设置为 NULL 。 |
加密方式 | 字符串 | 可选 | 客户端用于与负载均衡器建立连接的 TLS 加密。如果客户端未使用 HTTP(S) 或客户端未使用 TLS/SSL 加密,则此值设置为 NULL 。 |
MtlsDetails 字段格式
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
clientCertPresent | bool | 可选 | 如果客户端在 TLS 握手期间提供了证书,则为 |
clientCertChainVerified | bool | 可选 | 如果根据配置的 |
clientCertError | 字符串 | 可选 | 代表错误情况的预定义字符串。如需详细了解错误字符串,请参阅 mTLS 客户端验证模式。 |
clientCertSha256Fingerprint | 字符串 | 可选 | 客户端证书的 Base64 编码 SHA-256 指纹。 |
clientCertSerialNumber | 字符串 | 可选 | 客户端证书的序列号。如果序列号长度超过 50 字节,则将字符串 |
clientCertValidStartTime | 字符串 | 可选 | 在此时间戳(RFC 3339 日期字符串格式)之前,客户端证书无效。
例如 |
clientCertValidEndTime | 字符串 | 可选 | 在此时间戳(RFC 3339 日期字符串格式)之后,客户端证书无效。
例如 |
clientCertSpiffeId | 字符串 | 可选 | 主题备用名称 (SAN) 字段中的 SPIFFE ID。如果值无效或超过 2048 字节,则 SPIFFE ID 设置为空字符串。 如果 SPIFFE ID 长度超过 2048 字节,则将字符串 |
clientCertUriSans | 字符串 | 可选 | URI 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。
如果 |
clientCertDnsnameSans | 字符串 | 可选 | DNSName 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。 如果 |
clientCertIssuerDn | 字符串 | 可选 | 证书中采用 Base64 编码的完整“颁发者”字段。 如果 |
clientCertSubjectDn | 字符串 | 可选 | 证书中采用 Base64 编码的完整“主题”字段。 如果 |
clientCertLeaf | 字符串 | 可选 | 已建立的 mTLS 连接(证书在其中通过了验证)的客户端叶证书。证书编码符合 RFC 9440 标准:二进制 DER 证书使用 Base64 编码(不含换行符、空格或 Base64 字母表之外的其他字符),两侧都用英文冒号分隔。 如果 |
clientCertChain | 字符串 | 可选 | 已建立的 mTLS 连接(客户端证书在其中通过了验证)的客户端证书链的英文逗号分隔证书列表(按标准 TLS 顺序排列),不包括叶证书。证书编码符合 RFC 9440 标准。 如果 |
proxyStatus 错误字段
proxyStatus
字段包含一个字符串,用于指定负载均衡器返回错误的原因。proxyStatus
字段包含两个部分:proxyStatus error
和 proxyStatus details
。本部分介绍了 proxyStatus error
字段支持的字符串。
proxyStatus 错误字段适用于以下负载均衡器:
- 区域级外部应用负载均衡器
- 跨区域内部应用负载均衡器
- 区域级内部应用负载均衡器
proxyStatus 错误 | 说明 | 通用的附带响应代码 |
---|---|---|
destination_unavailable
|
负载均衡器认为后端不可用。例如,最近尝试与后端通信失败,或者健康检查可能导致失败。 | 500、503 |
connection_timeout
|
负载均衡器尝试打开与后端的连接时超时。 | 504 |
connection_terminated
|
在收到完整响应之前,负载均衡器与后端的连接已终结。 在出现以下任一情况时,系统会返回此
|
0、502、503 |
connection_refused
|
负载均衡器与后端的连接被拒绝。 | 502、503 |
connection_limit_reached
|
负载均衡器配置为限制其与后端的连接数,并且超出了该限制。 在出现以下任一情况时,系统会返回此
|
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 error
和 proxyStatus details
。proxyStatus 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 规范的字符。 例如,包含双引号 ( 如需了解详情,请参阅以下主题: |
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 具有三个以上的中间证书,它们共享相同的 Subject 和 Subject 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
|
由接收任何握手消息的端点发送此错误,该消息包含已知被禁止纳入给定握手消息中的扩展,或者包含并非第一次在相应 ClientHello 或 CertificateRequest 中提供的 ServerHello 或 Certificate 中的任何扩展。
该错误会导致 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.3
和 0.5
,则失败的 TLS 连接日志采样率为 0.5
。
您可以通过检查以下日志条目详细信息来识别失败的 TLS 连接:
- proxyStatus 错误类型为
tls_alert_received
、tls_certificate_error
、tls_protocol_error
或connection_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"
资源标签
下表列出了 resource.type="internal_http_lb_rule"
的资源标签。
字段 | 类型 | 说明 |
---|---|---|
network_name |
字符串 | 负载均衡器的 VPC 网络名称。 |
project_id | 字符串 | 与相应资源关联的 Google Cloud 项目的标识符。 |
region |
字符串 | 在其中定义负载均衡器的区域。 |
url_map_name | 字符串 | 配置为选择一项后端服务的网址映射对象的名称。 |
forwarding_rule_name |
字符串 | 转发规则对象的名称。 |
target_proxy_name | 字符串 | 转发规则引用的目标代理对象的名称。 |
matched_url_path_rule |
字符串 |
作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是 UNMATCHED 或 UNKNOWN (用作回退)。
|
backend_target_name |
字符串 | 根据与请求匹配的网址映射路径规则或路由规则,为处理请求而选择的后端的名称。 |
backend_target_type | 字符串 | 后端目标的类型 (BACKEND_SERVICE /UNKNOWN )。 |
backend_name |
字符串 | 后端实例组或网络端点组 (NEG) 的名称。 |
backend_type |
字符串 | 后端类型,实例组或 NEG,或者未知。 当 |
backend_scope |
字符串 |
后端的范围,可以是可用区名称或区域名称。如果 backend_name 未知,该字段可能为 UNKNOWN 。 |
backend_scope_type |
字符串 |
后端的范围 (REGION /ZONE )。如果 backend_name 未知,该字段可能为 UNKNOWN 。
|
backend_target_cross_project_id |
字符串 |
后端目标服务或存储桶的项目 ID。仅当后端目标资源是在与创建 url_map 资源的项目不同的项目中创建时,此字段才可用。
|
授权政策请求日志
负载均衡器日志条目 JSON 载荷中的 authz_info
对象包含有关授权政策的信息。您可以为这些政策允许或拒绝的流量配置基于日志的指标。
字段 | 类型 | 说明 |
---|---|---|
authz_info.policies[] |
对象 | 与请求匹配的政策的列表。 |
authz_info.policies[].name |
字符串 | 与请求匹配的授权政策的名称。 名称为空的原因如下:
|
authz_info.policies[].result |
枚举 | 结果可以是 ALLOWED 或 DENIED 。 |
authz_info.policies[].details |
字符串 | 详细信息包括以下内容:
|
authz_info.overall_result |
枚举 | 结果可以是 ALLOWED 或 DENIED 。 |
查看 mTLS 客户端证书验证的日志
如需查看双向 TLS 客户端证书验证期间关闭连接时记录的错误,请完成以下步骤。
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
点击显示查询切换开关以启用查询编辑器。
将以下内容粘贴到查询字段中。将
FORWARDING_RULE_NAME
替换为转发规则的名称。jsonPayload.statusDetails=~"client_cert" jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
点击运行查询。
监控
内部应用负载均衡器会将监控数据导出到 Monitoring。
监控指标具有以下用途:
- 评估负载均衡器的配置、使用情况和性能
- 问题排查
- 提高资源利用率并改善用户体验
除了 Monitoring 中的预定义信息中心,您还可以通过 Monitoring API 创建自定义信息中心、设置提醒和查询指标。
查看 Cloud Monitoring 指标
控制台
如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:
-
在 Google Cloud 控制台中,转到 leaderboard Metrics Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 在指标元素中,展开选择指标菜单,在过滤栏中输入
Internal Application Load Balancer Rule
,然后使用子菜单选择一个特定资源类型和指标:- 在活跃资源菜单中,选择内部应用负载均衡器规则。
- 如需选择指标,请使用活跃指标类别和活跃指标菜单。
- 点击应用。
如需从显示结果中移除时序,请使用过滤条件元素。
如需组合时序,请使用聚合元素上的菜单。例如,如需根据虚拟机所在的可用区显示虚拟机的 CPU 利用率,请将第一个菜单设置为平均值,并将第二个菜单设置为可用区。
当聚合元素的第一个菜单设置为未聚合时,系统会显示所有时序。聚合元素的默认设置由您选择的指标类型决定。
- 对于配额和每天报告一个样本的其他指标,请执行以下操作:
- 在显示窗格中,将微件类型设置为堆叠条形图。
- 将时间段设置为至少一周。
定义提醒政策
控制台
您可以创建提醒政策来监控指标的值,当这些指标违反条件时便会通知您。
-
在 Google Cloud 控制台中,转到 notifications 提醒页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
- 在提醒页面中,点击创建政策。
- 如需选择指标,请展开选择指标菜单,然后执行以下操作:
- 如需将菜单限制为相关条目,请在过滤栏中输入
Internal Application Load Balancer Rule
。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。 - 在资源类型字段中,请选择内部应用负载均衡器规则。
- 选择指标类别和指标,然后选择应用。
- 如需将菜单限制为相关条目,请在过滤栏中输入
- 点击下一步。
- 配置提醒触发器页面中的设置决定了何时触发提醒。 选择条件类型,并在必要时指定阈值。如需了解详情,请参阅创建指标阈值提醒政策。
- 点击下一步。
- 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定。
- 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
- 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
- 点击提醒名称,然后输入提醒政策的名称。
- 点击 Create Policy(创建政策)。
定义 Monitoring 自定义信息中心
控制台
您可以针对内部应用负载均衡器指标创建自定义 Monitoring 信息中心:
在 Google Cloud 控制台中,转到 Monitoring 页面。
选择信息中心 > 创建信息中心。
点击 Add Chart。
给图表添加一个标题。
选择指标和过滤条件。对于指标,资源类型为内部 HTTP/S 负载均衡器。
点击保存。
指标报告频率与保留
系统会每隔 1 分钟将负载均衡器的指标批量导出到 Monitoring 中。监控数据会保留六 (6) 周。 默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 1 分钟到 6 周的范围内手动指定分析时间间隔。
内部应用负载均衡器的监控指标
内部应用负载均衡器的以下指标会报告给 Monitoring:
指标 | FQDN | 说明 |
---|---|---|
请求数 | loadbalancing.googleapis.com/https/internal/request_count |
内部应用负载均衡器传送的请求数。 |
请求字节数 | loadbalancing.googleapis.com/https/internal/request_bytes |
以请求形式从客户端发送到内部应用负载均衡器的字节数。 |
响应字节数 | loadbalancing.googleapis.com/https/internal/response_bytes |
以响应形式从内部 HTTP(S) 负载均衡器发送到客户端的字节数。 |
总延迟时间 | loadbalancing.googleapis.com/https/internal/total_latencies |
延迟时间的分布(以毫秒为单位)。延迟时间从代理收到请求的第一个字节开始计算,直到代理发送响应的最后一个字节为止。 |
后端延迟时间 | loadbalancing.googleapis.com/https/internal/backend_latencies |
延迟时间的分布(以毫秒为单位)。延迟时间从代理向后端发送请求的第一个字节开始计算,直到代理收到来自后端的响应的最后一个字节为止。 |
内部应用负载均衡器指标的过滤维度
系统会为每个内部应用负载均衡器汇总指标。您可以按照以下维度过滤汇总的指标:
属性 | 说明 |
---|---|
BACKEND_SCOPE | 传送客户端请求的后端组所在的 Google Cloud 区域或地区,如果未分配后端组,则此属性的值为特殊字符串。示例:us-central1-a 、europe-west1-b 、asia-east1 、UNKNOWN 。 |
PROXY_REGION | 内部应用负载均衡器、客户端和后端所在的区域。示例:us-central1 、europe-west1 或 asia-east1 。 |
BACKEND | 传送客户端请求的后端实例组或网络端点组的名称。 |
BACKEND_TARGET | 传送客户端请求的后端服务的名称。 |
MATCHED_URL_RULE | 与客户端 HTTP(S) 请求前缀匹配的网址映射路径规则或路由规则(最多 50 个字符)。 |
整个负载均衡器均支持 Response code class fraction
指标,不再支持进一步细分。
后续步骤
- 了解有关内部应用负载均衡器的概念性信息。
- 创建内部应用负载均衡器。
- 如需了解负载均衡器可以使用的 DNS 名称选项,请参阅内部负载均衡和 DNS 名称。