后端服务的日志和指标

本文档介绍了如何配置 Cloud LoggingCloud Monitoring 并将其与全球外部 HTTP(S) 负载均衡器(经典版)、全球外部 HTTP(S) 负载均衡器和 Cloud CDN 配合使用。

日志记录

您可以对外部 HTTP(S) 负载均衡器后端服务启用和停用日志,还可以查看其日志。 对于具有后端存储桶的外部 HTTP(S) 负载均衡器,日志记录功能会自动启用且无法停用。

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

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

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

控制台

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

    进入“负载均衡”

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

  3. 点击 修改

  4. 点击后端配置

  5. 选择创建后端服务

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

  7. 点击启用日志记录

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

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

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

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 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器搭配使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.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 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器(经典版)搭配使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.0 值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。只有搭配使用 --enable-logging 参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为 0.0,那么效果将相当于停用日志记录功能。默认值为 1.0

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

控制台

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

    进入“负载均衡”

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

  3. 点击 修改

  4. 点击后端配置

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

  6. 点击启用日志记录

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

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

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

gcloud:全局模式

使用 gcloud compute backend-services update 命令在现有后端服务上启用日志记录。

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE

其中

  • --global 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器搭配使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.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 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器(经典版)搭配使用的后端服务。
  • --enable-logging 表示对该后端服务启用日志记录功能。
  • --logging-sample-rate 接受从 0.01.0 值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。只有搭配使用 --enable-logging 参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为 0.0,那么效果将相当于停用日志记录功能。默认值为 1.0

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

控制台

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

    进入“负载均衡”

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

  3. 点击 修改

  4. 点击后端配置

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

  6. 取消选中启用日志记录,以完全停用日志记录功能。

  7. 如果要保持启用日志记录功能,可以在采样率字段中设置不同的采样概率。您可以设置 0.01.0 的数字,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。默认值为 1.0。 例如,要将日志存储量减到 20%,请将采样率设置为 0.2

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

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

gcloud:全局模式

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

完全停用日志记录功能

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --no-enable-logging

其中

  • --global 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器搭配使用的后端服务。
  • --region 表示后端服务是区域性的。此字段用于与区域级外部 HTTP(S) 负载均衡器搭配使用的后端服务。
  • --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 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器(经典版)搭配使用的后端服务。
  • --no-enable-logging 表示对该后端服务停用日志记录功能。

修改日志采样率

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

其中

  • --global 表示后端服务是全球性的。 此字段用于与全球外部 HTTP(S) 负载均衡器(经典版)搭配使用的后端服务。
  • --logging-sample-rate 接受从 0.01.0 值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。只有搭配使用 --enable-logging 参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为 0.0,那么效果将相当于停用日志记录功能。

查看日志


如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


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

如需查看日志,请转到日志浏览器页面:

转到日志浏览器

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

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

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

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

系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。 对于全球外部 HTTP(S) 负载均衡器(经典版)和全球外部 HTTP(S) 负载均衡器,您可以使用资源日志 (resource.type="http_load_balancer") 导出基于日志的指标。这些指标是基于“Google Cloud HTTP 负载均衡规则(基于日志的指标)”资源 (l7_lb_rule) 创建的,您可以在 Cloud Monitoring 信息中心下(而不是 https_lb_rule 资源下)找到该资源。

记录的内容

外部 HTTP(S) 负载均衡器日志条目包含对监控和调试 HTTP(S) 流量有用的信息。日志记录包含必填字段,这些字段是每个日志记录的默认字段。

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

未针对 resource.type="http_load_balancer" 填充 HttpRequest.protocol

.
resource MonitoredResource 需要

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

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

jsonPayload object (Struct format) 需要 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:
  • statusDetails
字符串 需要 statusDetails 字段会显示一个字符串,用于说明负载均衡器返回其 HTTP 状态的原因。如需详细了解这些日志字符串,请参阅 statusDetails HTTP 成功消息statusDetails HTTP 失败消息

资源标签

下表列出了 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 标头。
backend_connection_closed_before_data_sent_to_client 响应代理至客户端之前,后端与负载均衡器的连接意外关闭。如果负载均衡器正在向另一个实体发送流量,就会发生这种情况。另一个实体可能是 TCP 超时时间短于外部 HTTP(S) 负载均衡器的 10 分钟(600 秒)超时的第三方负载均衡器。第三方负载均衡器可能在虚拟机实例上运行。将目标服务上的 TCP 超时 (keepalive) 手动设置为大于 600 秒可能会解决此问题。 502
backend_early_response_with_non_error_status 在接收整个请求正文前,后端向请求发送无错误响应(1XX 或 2XX)。 502
backend_interim_response_not_supported 在不支持临时响应的情况下,后端对请求发送了临时 1XX 响应。 502
backend_response_corrupted 后端发送的 HTTP 响应正文含无效的分块传输编码或损坏的传输编码。 取决于损坏的性质,任何响应代码都有可能。通常为 502。
backend_response_headers_too_long 后端发送的 HTTP 响应标头超出了允许的限制。如需了解详情,请参阅外部 HTTP(S) 负载均衡器的标头大小部分。 502
backend_timeout 后端在生成响应时超时。 502
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 负载均衡器发送部分响应后,与客户端的连接中断。 从后端返回 - 任何响应代码均有可能。
client_disconnected_before_any_response 负载均衡器发送任何响应之前,与客户端的连接已中断。 0
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 客户端证书或其颁发者都没有包含 clientAuthExtended 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 客户端证书未通过 TrustConfig 验证。 如需了解详情,请参阅关闭连接时记录的错误 0
config_not_found 负载均衡器未配置后端。 404 或 503
direct_response 负载均衡器覆盖此请求并返回固定响应。 根据问题的性质,您可能会看到任何 HTTP 响应代码。例如,HTTP 410 响应代码表示后端因欠费而不可用。
denied_by_security_policy 负载均衡器因 Google Cloud Armor 安全政策而拒绝了此请求。 在安全政策中配置。
error_uncompressing_gzipped_body 对 gzip 格式的 HTTP 响应进行解压缩时出错。 503
failed_to_connect_to_backend 负载均衡器无法连接到后端。这包括连接阶段的超时。 502
failed_to_pick_backend 负载均衡器无法挑选运转状况良好的后端来处理请求。 502
failed_to_negotiate_alpn 负载均衡器和后端无法协商用于通过 TLS 相互通信的应用层协议(如 HTTP/2)。 502
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 请求标头无效。 400
invalid_http2_client_header_format 来自客户端的 HTTP/2 标头无效。 400
multiple_iap_policies 多个 Identity-Aware Proxy (IAP) 政策不能结合使用。如果您将一项 IAP 政策关联到后端服务,并将另一项政策关联到无服务器对象,请移除其中一项政策然后重试。无服务器对象包括 App Engine、Cloud Run 和 Cloud Functions。 500
malformed_chunked_body 请求正文采用了不正确的块编码。 411
request_loop_detected 负载均衡器检测到了请求循环。此循环可能是由于配置错误,导致后端将请求转发回负载均衡器而造成的。 502
required_body_but_no_content_length HTTP 请求需要具有正文,但请求标头不包含内容长度标头或分块传输编码标头。 400 或 403
secure_url_rejected 明文 HTTP/1.1 连接接收到带有 https:// 网址的请求。 400
ssl_san_verification_failed 负载均衡器在后端提供的 SSL 证书中找不到与配置的主机名匹配的 SAN(主题备用名称)。 502
ssl_certificate_chain_verification_failed 由后端提供的 SSL 证书未通过 SSL 证书验证。 502
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
serverless_neg_routing_failed 无法分派无服务器 NEG 请求。如果无法访问 NEG 中指定的区域,或者找不到资源名称(例如 Cloud Functions 名称),可能会发生此错误。 404、502
fault_filter_abort 如果客户配置了故障过滤条件并且给定请求触发了故障过滤条件,则可能会发生此错误。 该值必须介于 200 到 599 之间。

查看 mTLS 客户端证书验证的日志

如需查看双向 TLS 客户端证书验证期间关闭连接时记录的错误,请完成以下步骤。

控制台查询

  1. 在 Google Cloud 控制台中,转到“日志浏览器”页面。

    转到日志浏览器

  2. 点击显示查询切换开关。

  3. 将以下内容粘贴到查询字段中。将 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
    
  4. 点击运行查询

后端存储分区的日志记录

系统会自动为具有后端存储分区的负载均衡器启用日志记录功能。您无法修改或停用后端存储分区的日志记录。

Google Cloud Armor 的日志记录

statusDetail HTTP 失败消息表包含一些适用于 Google Cloud Armor 的消息。如需详细了解 Google Cloud Armor 记录的内容,请参阅使用请求日志记录

与日志交互

您可以使用 Cloud Logging API 与外部 HTTP(S) 负载均衡器日志进行交互。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 自动填充。

执行以下步骤来访问预定义的信息中心:

  1. 转到 Google Cloud 控制台中的 Monitoring

    转到 Monitoring

  2. 在 Monitoring 导航面板中,点击信息中心

  3. 类别下,点击 GCP

    • 如需查看所有 Google Cloud 负载均衡器的信息中心列表,请选择名为 Google Cloud 负载均衡器 (Google Cloud Load Balancers) 的信息中心。如需查看特定负载均衡器的信息中心,请在列表中找到负载均衡器,然后点击其名称。

    • 如需仅查看外部 HTTP(S) 负载均衡器的预定义信息中心,请选择名为外部 HTTP(S) 负载均衡器的信息中心。此页面会显示一个信息中心,其中显示项目中所有外部 HTTP(S) 负载均衡器的 5XX 响应比率和后端延迟时间。它还会列出项目中所有外部 HTTP(S) 负载均衡器的信息中心。

      您可以点击进入每个负载均衡器的信息中心。每个信息中心包含以下内容:

      • 预填充图表,按响应代码类别(5XX、4XX、3XX、2XX)显示响应的细分
      • 总延迟时间
      • 后端延迟时间
      • 前端 RTT
      • 请求数
      • 指向负载均衡器日志的链接
  4. 如需查看第三方服务的信息中心,请返回信息中心页面。在类别下,点击其他

    • 如需查看特定的第三方服务信息中心,请在列表中找到它,然后点击其名称。

定义提醒政策


如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


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

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

    打开 Monitoring

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

定义 Cloud Monitoring 自定义信息中心

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

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

    进入 Monitoring

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

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

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

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

  6. 点击保存

指标报告频率和保留

每隔 1 分钟,系统就会将外部 HTTP(S) 负载均衡器的指标批量导出到 Cloud Monitoring 中。监控数据会保留六 (6) 周。 指标基于抽样流量(采样率是动态的,且无法调整)。默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 1 分钟到 6 周的范围内手动指定分析时间间隔。

监控指标

您可以监控外部 HTTP(S) 负载均衡器的以下指标。

全球外部 HTTP(S) 负载均衡器的以下指标会报告给 Cloud Monitoring。这些指标以 loadbalancing.googleapis.com/ 开头。

指标 名称 说明
请求数 https/request_count 外部 HTTP(S) 负载均衡器传送的请求数
请求字节数 https/request_bytes_count 以请求形式从客户端发送到外部 HTTP(S) 负载均衡器的字节数
响应字节数 https/response_bytes_count 以响应形式从外部 HTTP(S) 负载均衡器发送到客户端的字节数
总延迟时间 https/total_latencies

延迟时间的分布。延迟时间是指收到的请求的第一个字节到 GFE 发送的响应的最后一个字节之间的时间。

总延迟时间通过请求/响应来计算。同一连接上使用 Connection: keep-alive 的请求之间的暂停不会影响计算结果。在 Cloud Monitoring 视图中,计算结果通常会降低到第 95 百分位。

示例:负载均衡器每秒收到来自英国的 1 个请求,所有延迟时间为 100 毫秒,每秒收到来自美国的 9 个请求,所有延迟时间均为 50 毫秒。在一定时间内,英国发出 60 个请求,美国发出 540 个请求。监控指标保留了所有维度的分布。您可以请求如下所示的信息:

  • 总体延迟时间的中位数 (300/600) - 50 毫秒
  • 英国延迟时间的中位数 (30/60) - 100 毫秒
  • 总体延迟时间的第 95 百分位 (570/600) - 100 毫秒
前端 RTT* https/frontend_tcp_rtt 针对客户端和 GFE 之间的每个连接测量的平滑往返时间 (RTT) 分布(通过 GFE 的 TCP 栈测量)。平滑 RTT 是一种算法,用于处理 RTT 测量中可能发生的变体和异常。
后端延迟时间* https/backend_latencies

从 GFE 向后端发送首个请求字节开始,直到 GFE 从后端接收到响应的最后一个字节,测量延迟的分布。

对于 WebSocket 连接,后端延迟时间针对 WebSocket 会话的整个时长进行计算。

响应代码类别比例 每种响应代码类别(2XX、4XX…)的响应次数占外部 HTTP(S) 负载均衡器总响应次数的比例。在 Cloud Monitoring 中,该值只会显示在默认信息中心,而不适用于自定义信息中心。您可以使用 API 为该指标设置提醒。
后端请求数 https/backend_request_count 从外部 HTTP(S) 负载均衡器发送到后端的请求数。
后端请求字节数 https/backend_request_bytes_count 以请求形式从外部 HTTP(S) 负载均衡器发送到后端的字节数。
后端响应字节数 https/backend_response_bytes_count 以响应形式从后端(包括缓存)发送到外部 HTTP(S) 负载均衡器的字节数。
*前端 RTT 和后端延迟时间的总和不保证小于或等于总延迟时间。这是因为,虽然在 HTTP 响应收到 ACK 时,我们会对 GFE 到客户端的套接进行 RTT 轮询,但我们依赖部分测量结果的内核报告,无法保障内核对特定的 HTTP 响应进行 RTT 测量。最终结果是平滑计算 RTT 值也受以前的 HTTP 响应、SYN/ACK 和 SSL握手(不会影响当前 HTTP 请求实际耗时)的影响。

过滤指标的维度

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

系统会为每个全球外部 HTTP(S) 负载均衡器汇总指标。您可以按照以下维度对 resource.type="http_load_balancer" 过滤汇总的指标。

属性 说明
backend_scope 传送连接的后端服务实例组的 Google Cloud 范围(区域或可用区)。

如果没有可用的实例组或者请求已由其他实体处理,您将会看到以下某个值,而不会看到后端服务实例组的区域或可用区。

  • FRONTEND_5XX - 发生了内部错误,导致 GFE 无法选择后端。GFE 向客户端返回了 5XX。
  • INVALID_BACKEND - GFE 找不到运行状况良好的后端来分配请求,因此向请求者返回了 5XX 响应。
  • NO_BACKEND_SELECTED - 发生了错误或其他中断,导致无法选择后端。
  • SERVED_FROM_BACKEND_BUCKET - 请求已由后端存储分区处理。
  • SERVED_FROM_CACHE - 请求已由 GFE 缓存处理,因此系统未分配后端。
  • MULTIPLE_BACKENDS - 请求可能已由多个后端处理。缓存已将一个或多个字节范围请求发送到其他后端。使用 BACKEND_SCOPE 细分项可以显示每个负载均衡器到后端的请求。

选择此细分项后,图表会显示后端指标(负载均衡器到后端),而非前端指标(客户端到负载均衡器)。
backend_scope = "backend_zone" 如果实例组为可用区级实例组,则是指处理客户端请求的实例组的 Google Cloud 可用区。(示例:us-central1-aeurope-west1-basia-east1-c

选择此细分项后,图表会显示后端指标(负载均衡器到后端),而非前端指标(客户端到负载均衡器)。
backend_scope = "backend_region" 如果实例组为区域级实例组,则是指处理客户端请求的实例组的 Google Cloud 区域。(示例:us-central1europe-west1asia-east1

选择此细分项后,图表会显示后端指标(负载均衡器到后端),而非前端指标(客户端到负载均衡器)。
proxy_continent 终止 HTTP(S) 连接的 HTTP(S) GFE 所在的大洲。(示例:AmericaEuropeAsia
backend_type = "INSTANCE GROUP" 处理客户端请求的实例组的名称。

如果没有可用的实例组或者请求已由其他实体处理,您将看到以下某个值,而不会看到实例组。

  • FRONTEND_5XX - 发生了内部错误,导致 GFE 无法选择后端。GFE 向客户端返回了 5XX。
  • INVALID_BACKEND - GFE 找不到运行状况良好的后端来分配请求,因此向请求者返回了 5XX 响应。
  • NO_BACKEND_SELECTED - 发生了错误或其他中断,导致无法选择后端。
  • SERVED_FROM_BACKEND_BUCKET - 请求已由后端存储分区处理。
  • SERVED_FROM_CACHE - 请求已由 Cloud CDN 处理,因此系统未分配后端。
  • MULTIPLE_BACKENDS - 请求已由多个后端处理。

选择此细分项后,图表会显示后端指标(负载均衡器到后端),而非前端指标(客户端到负载均衡器)。
backend_target_type = "BACKEND_SERVICE" 处理请求的后端服务的名称。
matched_url_path_rule 与 HTTP(S) 请求前缀匹配的网址映射路径规则(最多 50 个字符)。
forwarding_rule_name 客户端用于发送请求的转发规则的名称。

后续步骤