适用于 Media CDN 插件的日志记录和监控

本页面介绍了如何针对媒体 CDN 配置和使用 Cloud LoggingCloud Monitoring 以及 Service Extensions 插件 。

日志记录

本部分介绍了媒体 CDN 插件的 Service Extensions 日志,以及如何查看日志消息中的信息并将其关联起来。

日志消息

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

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

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

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

  • 插件日志消息

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

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

  • 媒体 CDN 日志消息

    针对具有关联 Wasm 操作的 EdgeCacheService 资源的 HTTP 请求的媒体 CDN 日志消息。这些是常规 媒体 CDN 日志条目,可在 edgecache.googleapis.com服务下查看。

为插件启用日志记录

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

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

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

gcloud beta 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 日志。在此视图中, 每条插件日志消息都会记录在自己的日志记录中,并且不会自动与 请求日志信息相关联。

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

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

您还可以在 Logs Explorer 中查看与相应 媒体 CDN 请求日志相关的日志消息。 查看请求日志时,展开请求日志条目后,与该请求相关的插件日志会嵌套在请求日志下方。此视图有助于您了解与其关联的请求上下文中的插件日志。

日志示例

请考虑一个 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.networkactions.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": "networkactions.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": {
    "networkactions.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkactions.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
相关的媒体 CDN 日志条目如下所示。两条日志消息中的 requestIdtrace 值相同。
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    "wasmAction": "add-headers-action-prod-resource",
    "cacheKeyFingerprint": "f04d02bb12f2e79e",
    "proxyStatus": "Google-Edge-Cache",
    "clientCity": "Erlangen",
    "clientAsn": "8881",
    "origin": "example-origin",
    "cacheId": "ber",
    "tlsVersion": "NONE",
    "latency": "0.002840304s",
    "originIp": "142.250.145.128",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1",
    "clientRegionCode": "DE",
    "originalRequestId": "7656c418-df7c-4ae5-9db5-4f247ec5a82c",
    "httpTtfb": "0.002814903s",
    "metroIataCode": "BER",
    "proxyRegionCode": "DE",
    "cacheStatus": "hit"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "1631",
    "status": "200",
    "responseSize": "402907",
    "userAgent": "Wtrace",
    "remoteIp": "2001:1438:1:19::5",
    "protocol": "HTTP/1.1"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example-origin",
      "matched_path": "/turing/",
      "route_type": "ORIGIN",
      "path_matcher_name": "routes",
      "resource_container": "projects/123456789",
      "service_name": "example-service"
    }
  },
  "timestamp": "2023-05-10T03:05:43.321347304Z",
  "logName": "projects/bdn-prober/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "trace": "projects/1069774196212/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:49.919781008Z"
}

限制

插件只能为每个客户端 HTTP 请求记录最多 16 KiB 的有效载荷数据。此数量会分配给与给定 HTTP 请求关联的多个日志记录调用。此限制仅适用于日志消息文本,不适用于 Service Extensions 添加到日志记录的其他元数据。

例如,如果 on_http_request_headers 回调进行两次日志记录调用,每次调用包含 4 KiB 消息,然后 on_http_response_headers 回调尝试为同一 HTTP 请求进行三次日志记录调用,每次调用包含 4 KiB 消息,则第三条日志消息会被舍弃。系统会添加一条日志消息,用于记录被舍弃的插件生成的日志消息的数量。

监控

本部分介绍了如何使用 Cloud Monitoring 信息中心 查看媒体 CDN 插件的 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 的角度监控插件的以下指标。这些指标具有前缀 networkactions.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 插件虚拟机分配的总内存(以字节为单位)。

媒体 CDN 的插件指标

您可以从媒体 CDN 的角度监控插件的以下指标。指标类型字符串具有此前缀:edgecache.googleapis.com/edge_cache_route_rule/network_actions/。 该前缀已从表格中的条目中省略。

指标类型 显示名称
种类、类型、单位
说明
wasm_action_invocation_count Service Extensions 调用次数
DELTAINT641
在所选时间范围内媒体 CDN 处理的 Service Extensions 调用次数。
wasm_action_invocation_latencies Service Extensions 调用延迟
DELTADISTRIBUTIONus
媒体 CDN 调度和执行插件所用的总时间(以毫秒为单位)。该指标包含 Service Extensions 回调的标签分隔条目。