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

本页面介绍了如何为 Cloud Load Balancing 和 Cloud CDN 配置和使用 Cloud LoggingCloud Monitoring,并使用 Service Extensions 插件。

日志记录

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

日志消息

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

插件日志记录会使用以下上下文信息进行注解:

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

与 Service Extensions 相关的日志属于以下类别之一:

  • 插件日志消息

    由日志记录调用生成,例如 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 中构建查询 来查看日志。

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

这些日志消息位于 networkservices.googleapis.com/wasm_plugin_activity 日志中,资源 类型 networkservices.googleapis.com/WasmPluginVersion

系统还可能会向此日志添加信息性日志消息。 例如,如果插件调用超出 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 请求关联的多个日志记录调用中。此限制仅适用于日志消息文本,不适用于 Service Extensions 添加到日志记录的其他元数据。

例如,如果 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 模式时,以逗号分隔列表形式显示的 可选字段

在后端服务上启用日志记录后,系统会使用 Cloud Logging 日志请求记录 HTTP 或 HTTPS 请求。

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

后端服务的日志消息

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

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

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

字段 类型 说明
backend_target_name 字符串 扩展程序的后端目标的名称。
backend_target_type 字符串 后端目标的类型。
chain 字符串 与请求匹配的服务扩展程序资源中的扩展程序链的名称。 与请求匹配的服务扩展程序资源中的扩展程序链的名称。
extension 字符串 扩展程序链中的扩展程序的名称。
failed_open 布尔值 当扩展程序配置的 failOpen 设置为 true 时,此指标的值 true 表示在扩展程序超时或失败时处理继续进行。

仅适用于区域级外部应用负载平衡器、区域级内部应用负载平衡器和 跨区域内部应用负载平衡器。

grpc_status 枚举 gRPC 流的最新状态。如需了解详情,请参阅 gRPC 状态代码
per_processing_request_info 数组 针对 ext_proc 扩展程序的 ProcessingRequest 统计信息列表,或针对 ext_authz 扩展程序的 CheckRequest 统计信息列表,这些统计信息通过 gRPC 流发生。
per_processing_request_info[].event_type 枚举 ProcessingRequest 的事件类型。可以是以下类型之一: REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY
per_processing_request_info[].latency 时长 从向扩展程序发送 ProcessingRequest 消息的第一个字节到收到 ProcessingResponse 消息的最后一个字节所用的时间。
per_processing_request_info[].processing_effect 枚举 处理请求中每个事件的处理结果。

仅适用于区域级外部应用负载平衡器、区域级内部应用负载平衡器和 跨区域内部应用负载平衡器。

可以是下列值之一:

  • NONE:表示内容未更改。
  • NONE_FAILED_OPEN:表示由于扩展程序打开失败,因此未执行任何变更。
  • CONTENT_MODIFIED:表示内容已通过成功应用的变更请求更改。
  • IMMEDIATE_RESPONSE:表示扩展程序发送了即时响应 以停止所有进一步处理。
  • MUTATION_REJECTED:表示扩展程序请求了至少 一项不允许的更改,并且进一步处理已中止。系统会记录相应的错误 消息。
  • UNSPECIFIED:表示处理效果未知。
per_processing_request_info[].processing_effect_details 字符串 processing_effectMUTATION_REJECTED 时,有关变更被拒绝的原因的详细信息。

仅适用于区域级外部应用负载平衡器、 区域级内部应用负载平衡器和跨区域内部应用负载平衡器。

resource 字符串 扩展程序资源的名称

监控

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

从插件角度进行监控

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

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

查看 Service Extensions 的 Monitoring 信息中心

如需查看 Service Extensions 的 Monitoring 信息中心,请执行以下操作:

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

    转到 Service Extensions

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

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

Service Extensions 的插件指标

您可以从 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 插件虚拟机分配的总内存(以字节为单位)。

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

本部分介绍了从负载均衡器角度对插件进行 Service Extensions 监控。

查看 Cloud Load Balancing 的 Monitoring 信息中心

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

Monitoring 指标适用于以下用途:

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

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

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

    前往信息中心概览

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

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

Cloud Load Balancing 的插件指标

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

预览版中,您可以监控所有类型的应用负载平衡器上的扩展程序的以下指标 。这些指标具有前缀 networkservices.googleapis.com。该前缀已从下表中的条目中省略。

下表提供了每个指标的指标类型、显示名、种类、类型、单位和说明。

指标类型 显示名
种类、类型、单位
说明
extension/invocation_count 扩展程序调用次数
DELTAINT641
发送到扩展程序的调用次数。
extension/invocation_latencies 扩展程序调用延迟
DELTADISTRIBUTIONms
根据每次扩展程序调用的延迟计算出的分布。
extension/sent_chunks_count 扩展程序发送的块数
DELTAINT641
仅适用于 request_bodyresponse_body 事件。 发送到扩展程序的数据块数。
extension/received_chunks_count 扩展程序收到的块数
DELTAINT641
仅适用于 request_bodyresponse_body 事件。 从扩展程序收到的块数。
extension/failed_open_count 扩展程序打开失败的调用次数
DELTAINT641
当系统配置为 打开失败且允许请求继续进行时,调用失败的次数。
extension/mutation_rejections_count 扩展程序变更拒绝次数
DELTAINT641
请求标头、正文或预告片变更但 被拒绝的调用次数。拒绝可能因多种原因而发生,例如变更 无效或超出大小限制。
extension/sent_bytes_count 扩展程序发送的字节数
DELTAINT64By
发送到扩展程序的字节数。
extension/received_bytes_count 扩展程序收到的字节数
DELTAINT64By
从扩展程序收到的字节数。

您还可以监控以下指标。这些指标具有前缀 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 负载均衡部分。