应用负载平衡器和 Cloud CDN 插件的日志记录和监控

本页面介绍了如何为 Cloud Load Balancing 和 Cloud CDN 配置和使用 Cloud LoggingCloud Monitoring 以及服务扩展插件。

日志记录

本部分介绍了应用负载平衡器插件的日志记录。可以从插件角度和负载均衡器角度进行日志记录。

日志消息

Service Extensions 支持在插件执行期间生成日志消息。默认情况下,日志记录处于停用状态。如需记录插件的日志,请在创建插件或更新插件时启用日志记录。

插件日志记录会添加以下上下文信息注释:

  • 标准日志注释,例如时间戳和日志级别。
  • 生成消息的插件的身份。
  • 生成日志消息的插件回调
  • 一个 requestId 跟踪标识符,用于帮助确定日志消息与哪个请求日志相关联。

与服务扩展程序相关的日志属于以下类别之一:

  • 插件日志消息

    由日志记录调用生成,例如 Rust 的 info!(...)、Go 的 proxywasm.LogInfo(...) 或 C++ 的 LOG_INFO。Service Extensions 会将这些日志消息导出到 Cloud Logging。您可以记录请求和响应标头以及插件已采取的任何操作。

    您可以使用 networkservices.googleapis.com 服务查看这些消息。

  • Cloud Load Balancing 日志消息

    您可以使用 loadbalancing.googleapis.com 服务查看这些消息。

从插件角度记录日志

本部分从插件的角度介绍了 Service Extensions 日志记录。

为插件启用日志记录

Service Extensions 支持在插件执行期间生成日志消息。默认情况下,日志记录处于停用状态。

如需记录插件的日志,请在创建插件或更新插件时启用日志记录。

如需为现有插件启用日志记录,请使用 gcloud service-extensions wasm-plugins update 命令

gcloud service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

替换以下内容:

  • WASM_PLUGIN:插件的 ID 或完全限定名称
  • LOG_CONFIG:插件的日志记录选项。如需启用日志记录,请将 enable 选项设置为 true。然后,指定以下详细信息:

    • sample-rate:活动日志的抽样率,介于 01 之间的值。值 0 表示不存储日志消息。默认值 1 表示存储所有日志消息。一个介于 0.01.0 之间的浮点值,表示存储的日志消息百分比。
    • min-log-level:要导出到 Cloud Logging 的插件日志消息的最低严重程度级别。默认值为 INFO

为插件启用日志记录功能后,您可以在 Cloud Logging 中查看插件代码中日志记录语句发出的消息。

如需查看日志,请在 Google Cloud 控制台中前往 Logs Explorer 页面。

查看插件的日志消息

您可以在 Logs Explorer 中构建查询来查看日志。

您可以将插件日志视为独立的服务扩展日志。在此视图中,每个插件日志消息都会记录在自己的日志记录中,并且不会自动与请求日志信息相关联。

这些日志消息位于资源类型为 networkservices.googleapis.com/WasmPluginVersionnetworkservices.googleapis.com/wasm_plugin_activity 日志中。

系统还可能会向此日志添加信息性日志消息。例如,如果插件调用超出 CPU 或内存限制时发生插件故障,系统会记录严重程度为 ERROR 的消息。您还可以在查看和过滤错误中看到此类消息。

插件日志示例

假设有一个 Service Extensions 日志条目示例。message 的值会传递给插件的 LOG_INFO 调用。severity 值取决于插件日志调用中使用的日志级别。在 labels 部分中,API 的值为 HTTP_REQUEST_HEADER,表示记录的操作是 on_http_request_headers 插件回调。

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkservices.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkservices.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}

日志记录限制

插件每次客户端 HTTP 请求最多只能记录 16 KiB 的载荷数据。此金额会分摊到与给定 HTTP 请求关联的多个日志记录调用中。此限制仅适用于日志消息文本,不适用于服务扩展程序添加到日志记录的其他元数据。

例如,如果 on_http_request_headers 回调发出两次日志记录调用,每次调用都包含 4 KiB 的消息,然后 on_http_response_headers 回调尝试针对同一 HTTP 请求发出三次日志记录调用,每次调用都包含 4 KiB 的消息,则第三条日志记录消息会被舍弃。添加了一个日志消息,用于记录丢弃的插件生成的日志消息数量。

从负载均衡器的角度记录日志

本部分从负载平衡器的角度介绍 Service Extensions 日志记录。

在后端服务上启用日志记录

您可以在创建服务时为应用负载平衡器插件启用日志记录功能,方法是为请求的目标后端服务启用日志记录功能。

如需为目标后端服务启用日志记录,请使用 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

替换以下内容:

  • BACKEND_SERVICE:后端服务的名称
  • RATE:介于 0.01.0 之间的值,其中 0.0 表示不在日志中记录任何请求,1.0 表示在日志中记录所有请求。默认值为 1.0。 此设置仅在与 enable-logging 参数搭配使用时有效。如果您省略 enable-logging,则系统会停用日志记录功能。
  • REGION:后端的区域
  • LOGGING_OPTIONAL_MODE:启用以下模式之一的可选字段的日志记录:

    • INCLUDE_ALL_OPTIONAL 包含所有可选字段。
    • EXCLUDE_ALL_OPTIONAL(默认值):排除所有可选字段。
    • CUSTOM 包含可选字段的自定义列表。
  • OPTIONAL_FIELDS:选择 CUSTOM 模式时可选字段的英文逗号分隔列表

为后端服务启用日志记录功能后,HTTP 或 HTTPS 请求会通过 Cloud Logging 记录到日志中。

如需查看日志,请在 Google Cloud 控制台中前往 Logs Explorer 页面。

后端服务的日志消息

一般来说,应用负载平衡器日志条目包含对监控和调试 HTTP 或 HTTPS 流量有用的信息。日志条目包含以下类型的信息:

  • 大多数 Google Cloud 日志中显示的信息,例如严重性、项目 ID、项目编号和时间戳,如 LogEntry 日志中所述。
  • HttpRequest 日志字段。

HTTP 和 HTTPS 载荷均衡器的请求日志在载荷均衡器日志条目 JSON 载荷中包含一个 service_extension_info 对象,其中包含以下信息:

字段 类型 说明
backend_target_name 字符串 扩展程序的后端目标的名称。
backend_target_type 字符串 后端目标的类型。
chain 字符串 服务扩展资源中与请求匹配的扩展链的名称。
extension 字符串 扩展程序链中扩展程序的名称。
grpc_status 枚举 gRPC 流的最新状态。如需了解详情,请参阅 gRPC 状态代码
per_processing_request_info 数组 一个列表,其中包含 ext_proc 扩展程序的 ProcessingRequest 统计信息或通过 gRPC 流发生的 ext_authz 扩展程序的 CheckRequest 统计信息。
per_processing_request_info[].event_type 枚举 ProcessingRequest 的事件类型。可以是以下值之一:REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY
per_processing_request_info[].latency 时长 从向扩展程序发送 ProcessingRequest 消息的第一个字节开始,直到收到 ProcessingResponse 消息的最后一个字节为止,这段时间的长短。
resource 字符串 扩展资源名称

监控

本部分介绍了如何使用 Cloud Monitoring 信息中心查看使用服务扩展程序配置的应用负载平衡器插件的指标。您可以从插件角度或负载均衡器角度监控插件。

从插件的角度进行监控

本部分从插件的角度介绍了 Service Extensions 监控。

如需详细了解 Service Extensions 指标类型,请参阅Google Cloud 指标页面。

查看 Service Extensions 的 Monitoring 信息中心

如需查看服务扩展的“监控”信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往服务扩展程序页面。

    前往 Service Extensions

  2. 点击插件标签页。
  3. 点击插件名称。
  4. 插件详情页面上,点击监控标签页。
  5. 监控页面上,指标图表会显示有助于您监控插件性能的信息。

  6. 如需查看插件生命周期操作的指标,请从操作过滤条件列表中选择值。默认情况下,系统会选择值 HTTP request headerHTTP response header
  7. 如需查看特定插件版本的指标,请从插件版本过滤条件列表中选择一个值。默认情况下,系统会显示所有版本的指标。
  8. 如需更改要查看数据的时间段,请从时间选择器中选择一个预定义的时间段,或点击自定义并指定开始时间和结束时间。默认情况下,选择器设置为 1 day

Service Extensions 的插件指标

您可以从服务扩展的角度监控插件的以下指标。这些指标的前缀为 networkservices.googleapis.com/wasm_plugin/。表中的条目省略了此前缀。

指标类型 显示名
种类、类型、单位
说明
invocation_count Wasm 插件调用次数
DELTAINT641
所选时间跨度内插件的调用次数。每次插件回调调用都算作一次单独的插件调用。
invocation_latencies Wasm 插件调用延迟时间
DELTADISTRIBUTIONus
插件的本地执行时间(以毫秒为单位)。 相应指标包含每个回调的标签分隔条目。
cpu/usage_times Wasm 插件的归一化 CPU 使用情况
DELTADISTRIBUTIONus{CPU}
插件调用的 CPU 使用时间,以微秒为单位。
memory/bytes_used Wasm 插件内存使用情况
GAUGEDISTRIBUTIONBy
Wasm 插件虚拟机分配的总内存(以字节为单位)。

从负载均衡器的角度进行监控

本部分从负载均衡器的角度介绍了插件的服务扩展监控。

查看 Cloud Load Balancing 的监控信息中心

应用负载平衡器会将监控数据导出到 Cloud Monitoring

监控指标适用于以下用途:

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

如需查看预定义的信息中心,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往信息中心概览页面。

    前往信息中心概览

  2. 类别部分中,点击 GCP
    • 如需查看所有负载平衡器的信息中心列表,请在 GCP 信息中心列表中点击名为 Google Cloud 负载平衡器的信息中心。 如需查看特定负载均衡器的信息中心,请在列表中找到相应负载均衡器,然后点击其名称。
    • 如需仅查看负载平衡器的预定义信息中心,请选择相应的信息中心。

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

Cloud Load Balancing 的插件指标

您可以从 Cloud Load Balancing 的角度监控插件的以下指标。

这些指标的前缀为 loadbalancing.googleapis.com/。表中的条目省略了该前缀。

指标类型 显示名
种类、类型、单位
说明
https/backend_request_count
https/external/regional/backend_request_count
https/internal/backend_request_count
后端请求数
DELTAINT641
从应用负载平衡器调用插件的次数。
https/backend_request_bytes_count
https/external/regional/backend_request_bytes_count
https/internal/backend_request_bytes_count
后端请求字节数
DELTAINT64By
从负载均衡器发送到插件的字节数。
https/backend_response_bytes_count
https/external/regional/backend_response_bytes_count
https/internal/backend_response_bytes_count
后端响应字节数
DELTAINT64By
负载均衡器从扩展后端接收的字节数。

查看插件指标

如需查看特定插件的指标,请执行以下操作:

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

    转到 Metrics Explorer

  2. 指标元素中,展开选择指标菜单。然后,执行以下操作:

    1. 从资源列表中选择相应的应用负载平衡器规则。

    2. 从指标类别列表中,选择 Https

    3. 从指标列表中,选择一个插件指标

    4. 点击应用

  3. 过滤条件元素中,执行以下操作:

    1. 选择 backend_target_type 标签,并将值设置为 WASM_PLUGIN

    2. 选择 backend_target_name 标签,并将插件名称设置为值。

如需详细了解负载均衡器指标类型,请参阅 Google Cloud 指标页面中的loadbalancing 部分。