日志记录
您可以为外部应用负载均衡器后端服务启用和停用日志记录功能,还可以查看其日志。对于具有后端存储桶的外部应用负载均衡器,日志记录功能会自动启用且无法停用。
您可以为每个后端服务启用或停用日志记录功能。您可以配置是记录所有请求还是记录随机采样的一小部分请求。
您必须确保没有适用于外部应用负载均衡器的日志排除项。如需了解如何验证是否允许 Cloud HTTP Load
Balancer
日志,请参阅查看资源类型排除项。
日志采样和收集
系统会对负载均衡器后端虚拟机 (VM) 实例处理的请求(及相应响应)进行采样。然后,系统会处理这些采样的请求以生成日志。您可以根据 logConfig.sampleRate 参数控制系统以日志条目形式发出的请求的比例。当 logConfig.sampleRate
为 1.0
(100%) 时,表示系统会为所有请求生成日志并写入 Cloud Logging。
针对新的后端服务启用日志记录功能
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
选择创建后端服务。
填写必填的后端服务字段。
在日志记录部分,选中启用日志记录复选框。
设置采样率比例。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud:全局模式
使用 gcloud compute backend-services create
命令创建后端服务并启用日志记录功能。
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED
其中
--global
表示后端服务是全球性的。 此字段用于与全球外部应用负载均衡器搭配使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。
gcloud:经典模式
使用 gcloud compute backend-services create
命令创建后端服务并启用日志记录功能。
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL
其中
--global
表示后端服务是全球性的。 此字段用于与传统应用负载均衡器搭配使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。
针对现有后端服务启用日志记录功能
控制台
在 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 \ --global \ --enable-logging \ --logging-sample-rate=VALUE
其中
--global
表示后端服务是全球性的。 此字段用于与全球外部应用负载均衡器搭配使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。
gcloud:经典模式
使用 gcloud compute backend-services update
命令在现有后端服务上启用日志记录。
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE
其中
--global
表示后端服务是全球性的。 此字段用于与传统应用负载均衡器搭配使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。
针对现有后端服务停用或修改日志记录功能
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
点击后端服务旁边的
修改。如需完全停用日志记录功能,请在日志记录部分中清除启用日志记录复选框。
如果要保持启用日志记录功能,可以设置其他采样率比例。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。 例如,0.2
表示 20% 的抽样请求会生成日志。如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud:全局模式
使用 gcloud compute backend-services update
命令停用后端服务的日志记录功能。
完全停用日志记录功能
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
其中
--global
表示后端服务是全球性的。 此字段用于与全球外部应用负载均衡器搭配使用的后端服务。--region
表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。--no-enable-logging
表示对该后端服务停用日志记录功能。
修改日志采样率
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
gcloud:经典模式
使用 gcloud compute backend-services update
命令停用后端服务的日志记录功能。
完全停用日志记录功能
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
其中
--global
表示后端服务是全球性的。 此字段用于与传统应用负载均衡器搭配使用的后端服务。--no-enable-logging
表示对该后端服务停用日志记录功能。
修改日志采样率
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
其中
--global
表示后端服务是全球性的。 此字段用于与传统应用负载均衡器搭配使用的后端服务。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。
查看日志
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
如需查看日志,请进入 Logs Explorer 页面:
如需查看所有日志,请在资源过滤条件菜单中选择 Cloud HTTP 负载均衡器 > 所有转发规则。
如需查看一条转发规则的日志,请选择一个转发规则名称。
如需查看一个网址映射的日志,请选择一条转发规则,然后选择一个网址映射。
布尔值类型的日志字段通常仅在其值为 true
时才会显示。如果某个布尔值字段的值为 false
,则日志中将不会出现该字段。
系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。
对于传统应用负载均衡器和全球外部应用负载均衡器,您可以使用资源日志 (resource.type="http_load_balancer"
) 导出基于日志的指标。这些指标是基于“应用负载均衡器规则(基于日志的指标)”资源 (l7_lb_rule
) 创建的,此资源位于 Cloud Monitoring 信息中心中(而不是 https_lb_rule
资源下)。
记录的内容
外部应用负载均衡器日志条目包含对监控和调试 HTTP(S) 流量有用的信息。日志记录包含必填字段,这些字段是每个日志记录的默认字段。
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
severity insertID logName |
LogEntry | 必填 | 日志条目中描述的常规字段。 |
时间戳 | string (
|
可选 | 第一层 GFE 收到请求的时间。 |
httpRequest | HttpRequest | 必填 | 用于记录 HTTP 请求的通用协议。
未针对 |
resource | MonitoredResource | 必填 | MonitoredResource 是与日志条目关联的资源类型。 MonitoredResourceDescriptor 使用类型名称和一组标签来描述 |
jsonPayload | object (Struct format) | 必填 | 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:
|
字符串 | 必填 | statusDetails 字段会显示一个字符串,用于说明负载均衡器返回其 HTTP 状态的原因。如需详细了解这些日志字符串,请参阅 statusDetails HTTP 成功消息和 statusDetails HTTP 失败消息。 |
|
字符串 | 必填 | backendTargetProjectNumber 字段包含在其中创建了后端目标(后端服务或后端存储桶)的项目的编号。此字段的格式为:"projects/PROJECT_NUMBER" 。此信息仅适用于使用自定义错误响应的全球外部应用负载均衡器。 |
|
整数 | 必填 | overrideResponseCode 包含应用于发送给客户端的响应的替换响应代码。此信息仅适用于使用自定义错误响应的全球外部应用负载均衡器。 |
|
字符串 | 必填 | errorService 字段包含提供自定义错误响应的后端服务。此信息仅适用于使用自定义错误响应的全球外部应用负载均衡器。 |
|
字符串 | 必填 | errorBackendStatusDetails 字段包含向客户端提供的最终响应的 statusDetails 。此信息仅适用于使用自定义错误响应的全球外部应用负载均衡器。 |
|
AuthzPolicyInfo | 必填 | authzPolicyInfo 字段用于存储授权政策结果的相关信息。此信息仅适用于启用了
授权政策的全球外部应用负载平衡器。如需了解详情,请参阅
授权政策记录的内容。 |
|
字符串 | 可选 | 只有使用传统版应用负载平衡器迁移功能的客户才会填充 loadBalancingScheme 字段。此字段包含一个字符串,用于描述用于路由请求的负载均衡方案。可能的值为 EXTERNAL 或 EXTERNAL_MANAGED 。 |
资源标签
下表列出了 resource.type="http_load_balancer"
的资源标签。
字段 | 类型 | 说明 |
---|---|---|
backend_service_name |
字符串 | 后端服务的名称。 |
forwarding_rule_name |
字符串 | 转发规则对象的名称。 |
project_id |
字符串 | 与相应资源关联的 Google Cloud 项目的标识符。 |
target_proxy_name |
字符串 | 转发规则引用的目标代理对象的名称。 |
url_map_name |
字符串 | 配置为选择一项后端服务的网址映射对象的名称。 |
zone |
字符串 | 运行负载均衡器的可用区。可用区为 global 。 |
statusDetails HTTP 成功消息
statusDetails(成功) | 含义 | 通用的附带响应代码 |
---|---|---|
byte_range_caching
|
通过 Cloud CDN 字节范围缓存处理 HTTP 请求。 | 任何可缓存的响应代码都有可能。 |
response_from_cache
|
HTTP 请求由 Cloud CDN 缓存处理。 | 任何可缓存的响应代码都有可能。 |
response_from_cache_validated
|
返回码由通过后端验证的 Cloud CDN 缓存条目设置。 | 任何可缓存的响应代码都有可能。 |
response_sent_by_backend
|
HTTP 请求已成功代理到后端,响应由后端返回。 | HTTP 响应代码由后端上运行的软件设置。 |
statusDetails HTTP 失败消息
statusDetails(失败) | 含义 | 通用的附带响应代码 |
---|---|---|
aborted_request_due_to_backend_early_response
|
包含正文的请求因后端发送含错误代码的早期响应而取消。响应被转发给客户端。请求终止。 | 4XX 或 5XX |
backend_connection_closed_after_partial_response_sent
|
部分响应发送给客户端后,后端连接意外关闭。 | HTTP 响应代码由后端上运行的软件设置。HTTP 响应代码 0(零)表示后端发送了不完整的 HTTP 标头。 如果 HTTP(S) 连接已升级为 WebSocket 连接,则 HTTP 响应代码为 101。 |
backend_connection_closed_before_data_sent_to_client
|
响应代理至客户端之前,后端与负载均衡器的连接意外关闭。 | 502、503 如果 HTTP(S) 连接已升级为 WebSocket 连接,则 HTTP 响应代码为 101。 |
backend_early_response_with_non_error_status
|
在接收整个请求正文前,后端向请求发送无错误响应(1XX 或 2XX)。 | 502、503 |
backend_interim_response_not_supported
|
在不支持临时响应的情况下,后端对请求发送了临时 1XX 响应。 | 502、503 |
backend_response_corrupted
|
后端发送的 HTTP 响应正文含无效的分块传输编码或损坏的传输编码。 | 取决于损坏的性质,任何响应代码都有可能。通常为 502、503。 |
backend_response_headers_too_long
|
后端发送的 HTTP 响应标头超出了允许的限制。如需了解详情,请参阅外部应用负载均衡器的标头大小部分。 | 502、503 |
backend_timeout
|
后端在生成响应时超时。 对于 WebSocket 连接:
|
502、503 如果 HTTP(S) 连接已升级为 WebSocket 连接,则 HTTP 响应代码为 101。 |
banned_by_security_policy
|
相应请求已被 Google Cloud Armor 基于费率的屏蔽名单规则禁止。 | 429 |
body_not_allowed
|
客户端发送包含正文的 HTTP 请求,但所使用的 HTTP 方法不允许有正文。 | 400 |
byte_range_caching_aborted
|
负载均衡器先前收到了表明资源可缓存的响应以及受支持的字节范围。Cloud CDN 收到了不一致的响应(例如,响应代码不是预期的 206 Partial Content)。尝试使用字节范围请求执行缓存填充时,会发生这种情况。因此,负载均衡器取消了对客户端的响应。 | 2XX |
byte_range_caching_forwarded_backend_response
|
负载均衡器先前收到了表明资源可缓存的响应以及受支持的字节范围。Cloud CDN 收到了不一致的响应(例如,响应代码不是预期的 206 Partial Content)。尝试使用字节范围请求执行缓存填充时,会发生这种情况。负载均衡器随后将不一致的响应转发给客户端。 | 从后端返回 - 任何响应代码均有可能。 |
byte_range_caching_retrieval_abandoned
|
用户取消了由 Cloud CDN 发起的字节范围请求或验证请求。 | 从后端返回 - 任何响应代码均有可能。 |
byte_range_caching_retrieval_from_backend_failed_after_partial_response
|
由 Cloud CDN 发起的字节范围请求或验证请求遇到了错误。请参阅与 Cloud CDN 所发起请求对应的 Cloud Logging 日志条目,详细了解后端状态。 | 2XX |
cache_lookup_failed_after_partial_response
|
由于内部错误,负载均衡器无法传送来自 Cloud CDN 缓存的完整响应。 | 2XX |
cache_lookup_timeout_after_partial_response
|
由于客户端没有及时检索到内容,Cloud CDN 缓存查找流发生超时情况。 | 2XX |
client_disconnected_after_partial_response
|
负载均衡器发送部分响应后,与客户端的连接中断。 | 从后端返回 - 任何响应代码均有可能。 如果 HTTP(S) 连接已升级为 WebSocket 连接,则 HTTP 响应代码为 101。 |
client_disconnected_before_any_response
|
负载均衡器发送任何响应之前,与客户端的连接已中断。 | 0 如果 HTTP(S) 连接已升级为 WebSocket 连接,则 HTTP 响应代码为 101。 |
client_timed_out
|
Google Front End (GFE) 在代理请求或响应时由于缺乏进展而闲置客户端连接。 | 0 或 408 |
client_cert_invalid_rsa_key_size
|
客户端叶或中间证书的 RSA 密钥大小无效。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_unsupported_elliptic_curve_key
|
客户端证书或中间证书使用的是不受支持的椭圆曲线。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_unsupported_key_algorithm
|
客户端证书或中间证书使用非 RSA、非 ECDSA 算法。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_pki_too_large
|
用于验证的 PKI 具有三个以上的中间证书,它们共享相同的主体和主体公钥信息。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_chain_max_name_constraints_exceeded
|
为验证提供的中间证书有超过 10 个名称限制。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_chain_invalid_eku |
客户端证书或其颁发者都没有包含 clientAuth 的 Extended Key Usage (EKU)。如需了解详情,请参阅关闭连接时记录的错误。
|
0 |
client_cert_validation_timed_out
|
验证证书链时超出了时间限制。 如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_validation_search_limit_exceeded
|
在尝试验证证书链时达到深度或迭代限制。如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_validation_not_performed
|
配置 mTLS 时没有设置 TrustConfig 。
如需了解详情,请参阅关闭连接时记录的错误。
|
0 |
client_cert_not_provided
|
客户端在握手期间未提供请求的证书。 如需了解详情,请参阅关闭连接时记录的错误。 | 0 |
client_cert_validation_failed
|
使用 MD4、MD5 和 SHA-1 等哈希算法时,客户端证书未通过 TrustConfig 验证。
如需了解详情,请参阅关闭连接时记录的错误。
|
0 |
config_not_found
|
负载均衡器缺少项目配置。这可能间歇性发生,尤其是在您进行了配置更改来添加新资源之后。 由于存在两层代理,因此有时第一层 GFE 可能无法到达第二层 GFE。这可能是由于内部错误(例如正在进行的发布、负载均衡器过载或间歇性配置问题)造成的。 |
404、502、503 |
direct_response
|
负载均衡器覆盖此请求并返回固定响应。 | 根据问题的性质,您可能会看到任何 HTTP 响应代码。例如,HTTP 410 响应代码表示后端因欠费而不可用。 |
denied_by_security_policy
|
负载均衡器因 Google Cloud Armor 安全政策而拒绝了此请求。 | 在安全政策中配置。 |
error_uncompressing_gzipped_body
|
对 gzip 格式的 HTTP 响应进行解压缩时出错。 | 502、503 |
failed_to_connect_to_backend
|
负载均衡器无法连接到后端。这包括连接阶段的超时。 | 502、503 |
failed_to_pick_backend
|
负载均衡器无法挑选运转状况良好的后端来处理请求。 | 502、503 |
failed_to_negotiate_alpn
|
负载均衡器和后端无法协商用于通过 TLS 相互通信的应用层协议(如 HTTP/2)。 | 502、503 |
headers_too_long
|
请求标头大于最大允许值。 | 413 |
http_version_not_supported
|
HTTP 版本不受支持。目前仅支持 HTTP 0.9、1.0、1.1 和 2.0。 | 400 |
internal_error
|
负载均衡器出现内部错误。通常表示负载均衡器基础架构中的暂时性错误。请重试您的查询。 | 4XX |
invalid_external_origin_endpoint
|
外部后端的配置无效。请查看互联网 NEG 配置,确保它指定了有效的 FQDN/IP 地址和端口。 | 4XX |
invalid_request_headers
|
从客户端收到的 HTTP 请求标头包含至少一个不符合适用 HTTP 规范的字符。 例如,包含双引号 ( 如需了解详情,请参阅以下主题: |
400 |
invalid_http2_client_header_format
|
来自客户端的 HTTP/2 标头无效。 如需了解详情,请参阅 invalid_request_headers 。
|
400 |
invalid_http2_client_request_path
|
来自客户端的 HTTP/2 请求路径包含至少一个不符合 URI 规范的字符。 如需了解详情,请参阅“3.3. 路径”部分。 |
400 |
multiple_iap_policies
|
多个 Identity-Aware Proxy (IAP) 政策不能结合使用。如果您将一项 IAP 政策关联到后端服务,并将另一项政策关联到无服务器对象,请移除其中一项政策然后重试。无服务器对象包括 App Engine、Cloud Run 和 Cloud Run functions。 | 500 |
malformed_chunked_body
|
请求正文采用了不正确的块编码。 | 411 |
request_loop_detected
|
负载均衡器检测到了请求循环。此循环可能是由于配置错误,导致后端将请求转发回负载均衡器而造成的。 | 502、503 |
required_body_but_no_content_length
|
HTTP 请求需要具有正文,但请求标头不包含内容长度标头或分块传输编码标头。 | 400 或 403 |
secure_url_rejected
|
明文 HTTP/1.1 连接接收到带有 https:// 网址的请求。 | 400 |
ssl_certificate_san_verification_failed
|
负载均衡器在后端提供的 SSL 证书中找不到与配置的主机名匹配的 SAN(主题备用名称)。 | 502、503 |
ssl_certificate_chain_verification_failed
|
由后端提供的 SSL 证书未通过 SSL 证书验证。 | 502、503 |
throttled_by_security_policy
|
该请求被 Google Cloud Armor 节流规则阻止。 | 429 |
unsupported_method
|
客户端提供的 HTTP 请求方法不受支持。 | 400 |
unsupported_100_continue
|
客户端请求在不支持“Expect: 100-continue”标头的协议中包含该标头。 | 400 |
upgrade_header_rejected
|
客户端 HTTP 请求包含升级标头并且被拒绝。 | 400 |
websocket_closed
|
websocket 连接关闭。 | 101 |
websocket_handshake_failed
|
websocket 握手失败。 | 任何可能的响应代码,具体取决于握手失败的性质。 |
request_body_too_large
|
HTTP 请求正文超出了后端支持的上限。不适用于虚拟机后端。 | 413 |
handled_by_identity_aware_proxy
|
此响应由 Identity-Aware Proxy 在验证客户端身份期间生成以确认是否允许访问。 | 200、302、400、401、403、500、502、503 |
serverless_neg_routing_failed
|
无法分派无服务器 NEG 请求。如果无法访问 NEG 中指定的区域,或者找不到资源名称(例如 Cloud Run functions 名称),可能会发生此错误。 | 404、502、503 |
fault_filter_abort
|
如果客户配置了故障过滤条件并且给定请求触发了故障过滤条件,则可能会发生此错误。 | 该值必须介于 200 到 599 之间。 |
查看 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
点击运行查询。
授权政策请求日志
负载均衡器日志条目 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 。 |
后端存储桶的日志记录
系统会自动为具有后端存储桶的负载均衡器启用日志记录功能。您无法修改或停用后端存储桶的日志记录。
Google Cloud Armor 的日志记录
statusDetail
HTTP 失败消息表包含一些适用于 Google Cloud Armor 的消息。如需详细了解 Google Cloud Armor 记录的内容,请参阅使用请求日志记录。
共享 VPC 部署的日志记录
应用负载均衡器日志和指标通常导出到具有转发规则的项目。因此,默认情况下,服务管理员(在其中创建了后端服务的项目的所有者或用户)无权访问负载均衡器的日志和指标。您可以使用 IAM 角色将这些权限授予服务管理员。如需详细了解可用的 IAM 角色以及提供访问权限的步骤,请参阅授予对 Monitoring 的访问权限。
与日志交互
您可以使用 Cloud Logging API 与外部应用负载均衡器日志进行交互。Logging API 提供了多种方法来以交互方式过滤包含特定字段集的日志。它会将匹配的日志导出到 Cloud Logging、Cloud Storage、BigQuery 或 Pub/Sub。如需详细了解 Logging API,请参阅 Cloud Logging API 概览。
监控
负载均衡器会将监控数据导出到 Cloud Monitoring。
您可以使用监控指标执行以下操作:
- 评估负载均衡器的配置、使用情况和性能
- 排查问题
- 提高资源利用率和改善用户体验
除了 Cloud Monitoring 中的预定义信息中心以外,您还可以通过 Cloud Monitoring API 创建自定义信息中心、设置提醒和查询指标。
查看预定义 Cloud Monitoring 信息中心
Cloud Monitoring 提供预定义信息中心来监控负载均衡器。这些信息中心由 Cloud Monitoring 自动填充。
执行以下步骤来访问预定义的信息中心:
转到 Google Cloud 控制台中的 Monitoring。
在 Monitoring 导航面板中,点击信息中心。
在类别下,点击 GCP。
如需查看所有 Google Cloud 负载均衡器的信息中心列表,请选择名为 Google Cloud 负载均衡器 (Google Cloud Load Balancers) 的信息中心。如需查看特定负载均衡器的信息中心,请在列表中找到负载均衡器,然后点击其名称。
如需仅查看外部应用负载均衡器的预定义信息中心,请选择名为外部 HTTP(S) 负载均衡器的信息中心。此页面会显示一个信息中心,其中显示项目中所有外部应用负载均衡器的 5XX 响应比率和后端延迟时间。它还会列出项目中所有外部应用负载均衡器的信息中心。
您可以点击进入每个负载均衡器的信息中心。每个信息中心包含以下内容:- 预填充图表,按响应代码类别(5XX、4XX、3XX、2XX)显示响应的细分
- 总延迟时间
- 后端延迟时间
- 前端 RTT
- 请求数
- 指向负载均衡器日志的链接
如需查看第三方服务的信息中心,请返回信息中心页面。在类别下,点击其他。
- 如需查看特定的第三方服务信息中心,请在列表中找到它,然后点击其名称。
定义提醒政策
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
您可以创建提醒政策来监控指标的值,当这些指标违反条件时便会通知您。
-
在 Google Cloud 控制台中,转到 notifications 提醒页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
- 在提醒页面中,点击创建政策。
- 如需选择指标,请展开选择指标菜单,然后执行以下操作:
- 如需将菜单限制为相关条目,请在过滤栏中输入
Global External Application Load Balancer Rule
。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。 - 对于资源类型,请选择全球外部应用负载均衡器规则。
- 选择指标类别和指标,然后选择应用。
- 如需将菜单限制为相关条目,请在过滤栏中输入
- 点击下一步。
- 配置提醒触发器页面中的设置决定了何时触发提醒。 选择条件类型,并在必要时指定阈值。如需了解详情,请参阅创建指标阈值提醒政策。
- 点击下一步。
- 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定。
- 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
- 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
- 点击提醒名称,然后输入提醒政策的名称。
- 点击创建政策。
定义 Cloud Monitoring 自定义信息中心
您可以为负载均衡器的指标创建自定义 Cloud Monitoring 信息中心:
在 Google Cloud 控制台中,前往 Monitoring 页面。
选择信息中心 > 创建信息中心。
点击添加图表,然后为图表输入一个标题。
如需确定要显示的时序,请选择资源类型和指标类型:
- 在资源和指标部分,点击图表,然后在选择指标部分,从可用选项中进行选择:
- 对于全球外部应用负载均衡器,请选择资源类型全球外部应用负载均衡器规则。
- 点击应用。
- 在资源和指标部分,点击图表,然后在选择指标部分,从可用选项中进行选择:
如需指定监控过滤条件,请依次点击过滤条件 > 添加过滤条件。
点击保存。
指标报告频率和保留
系统会每隔 1 分钟将外部应用负载均衡器的指标批量导出到 Cloud Monitoring 中。监控数据会保留六 (6) 周。
默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 1 分钟到 6 周的范围内手动指定分析时间间隔。
监控指标
您可以监控外部应用负载均衡器的以下指标。
全球外部应用负载均衡器的以下指标会报告给 Cloud Monitoring。这些指标以 loadbalancing.googleapis.com/
开头。
指标 | 名称 | 说明 |
---|---|---|
请求数 | https/request_count |
外部应用负载均衡器处理的请求数 |
请求字节数 | https/request_bytes_count |
以请求形式从客户端发送到外部应用负载均衡器的字节数 |
响应字节数 | https/response_bytes_count |
以响应形式从外部应用负载均衡器发送到客户端的字节数 |
总延迟时间 | https/total_latencies |
延迟时间的分布。延迟时间是指收到的请求的第一个字节到 GFE 发送的响应的最后一个字节之间的时间。 总延迟时间通过请求/响应来计算。同一连接上的请求之间使用 对于 WebSocket 连接,此字段表示连接的整个时长。† 示例:负载均衡器每秒收到来自英国的 1 个请求,所有延迟时间为 100 毫秒,每秒收到来自美国的 9 个请求,所有延迟时间均为 50 毫秒。在一定时间内,英国发出 60 个请求,美国发出 540 个请求。监控指标保留了所有维度的分布。您可以请求如下所示的信息:
|
前端 RTT* | https/frontend_tcp_rtt |
针对客户端和 GFE 之间的每个连接测量的平滑往返时间 (RTT) 分布(通过 GFE 的 TCP 栈测量)。平滑 RTT 是一种算法,用于处理 RTT 测量中可能发生的变体和异常。 |
后端延迟时间* | https/backend_latencies |
从 GFE 向后端发送首个请求字节开始,直到 GFE 从后端接收到响应的最后一个字节,测量延迟的分布。 对于 websocket 连接,后端延迟时间针对 websocket 会话的整个时长进行计算。† |
响应代码类别比例 | 每种响应代码类别(2XX、4XX…)的响应次数占外部应用负载均衡器总响应次数的比例。在 Cloud Monitoring 中,该值只会显示在默认信息中心,而不适用于自定义信息中心。您可以使用 API 为该指标设置提醒。 | |
后端请求数 | https/backend_request_count |
从外部应用负载均衡器发送到后端的请求数。 |
后端请求字节数 | https/backend_request_bytes_count |
以请求形式从外部应用负载均衡器发送到后端的字节数。 |
后端响应字节数 | https/backend_response_bytes_count |
以响应形式从后端(包括缓存)发送到外部应用负载均衡器的字节数。 |
*前端 RTT 和后端延迟时间的总和不保证小于或等于总延迟时间。这是因为,虽然在 HTTP 响应收到 ACK 时,我们会对 GFE 到客户端的套接进行 RTT 轮询,但我们依赖部分测量结果的内核报告,无法保障内核对特定的 HTTP 响应进行 RTT 测量。最终结果是平滑计算 RTT 值也受以前的 HTTP 响应、SYN/ACK 和 SSL握手(不会影响当前 HTTP 请求实际耗时)的影响。
† 如需监控 websocket 连接,请专门为 websocket 创建后端服务。
过滤指标的维度
您可以为外部应用负载均衡器的指标应用过滤条件。
系统会为每个传统应用负载均衡器和全球外部应用负载均衡器汇总指标。您可以按照以下维度对 resource.type="http_load_balancer"
或 resource.type="https_lb_rule"
过滤汇总的指标。请注意,并非所有维度都适用于所有指标。
属性 | 说明 |
---|---|
backend_scope |
传送连接的后端服务实例组的 Google Cloud 范围(区域或可用区)。 如果没有可用的实例组或者请求已由其他实体处理,您将会看到以下某个值,而不会看到后端服务实例组的区域或可用区。
选择此细分项后,图表会显示后端指标(负载均衡器到后端),而非前端指标(客户端到负载均衡器)。 |
backend_type |
响应客户端请求的后端组的名称。
可以是
|
backend_target_type |
处理请求的后端服务的名称。 可以是 BACKEND_SERVICE 、BACKEND_BUCKET ;如果未分配后端,则可以是 UNKNOWN ;如果在选择后端或进行网址重定向之前发生了错误或其他中断,则可以是 NO_BACKEND_SELECTED 。 |
matched_url_path_rule |
与 HTTP(S) 请求前缀匹配的网址映射路径规则(最多 50 个字符)。 |
forwarding_rule_name |
客户端用于发送请求的转发规则的名称。 |
url_map_name |
作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是
|
target_proxy_name |
转发规则引用的目标 HTTP(S) 代理对象的名称。 |
backend_target_name |
后端目标的名称。目标可以是后端服务或后端存储桶。如果未分配后端,则系统会返回 UNKNOWN 。
|
backend_name |
后端实例组、存储桶或网络端点组 (NEG) 的名称。如果未分配后端,则系统会返回 UNKNOWN ;如果在选择后端或进行网址重定向之前发生了错误或其他中断,则系统会返回 NO_BACKEND_SELECTED 。 |
backend_scope_type |
后端组范围的类型。可以是 在使用块缓存时使用 |
proxy_continent |
终止 HTTP(S) 连接的 HTTP(S) GFE 所在的大洲。(示例:America 、Europe 、Asia ) |
protocol |
客户端使用的协议,为以下项之一:HTTP/1.0 、HTTP/1.1 、HTTP/2.0 、QUIC/HTTP/2.0 、UNKNOWN 。 |
response_code |
请求的 HTTP 响应代码。 |
response_code_class |
请求的 HTTP 响应代码类:200、300、400、500 或 0(表示无响应)。 |
cache_result |
通过代理响应 HTTP 请求的缓存结果:HIT 、MISS 、DISABLED 、PARTIAL_HIT (适用于部分从缓存响应且部分从后端响应的请求)或 UNKNOWN 。 |
client_country |
发出 HTTP 请求的客户端所在的国家/地区(例如 United States 或 Germany ) |
load_balancing_scheme |
所使用的负载均衡方案。如果使用的是传统应用负载均衡器,值为 EXTERNAL 。如果使用的是全球外部应用负载均衡器,值为 EXTERNAL_MANAGED 。 |
后续步骤
- 阅读外部应用负载均衡器概览。