本页面介绍了如何为 Cloud Load Balancing 和 Cloud CDN 配置和使用 Cloud Logging 和 Cloud 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:活动日志的采样率,介于0和1之间的值。值0表示不存储日志消息。默认值1表示存储所有日志消息 。介于0.0和1.0之间的浮点值表示存储一定百分比的日志消息。min-log-level:要导出到 Cloud Logging 的插件日志消息的最低 严重级别 。默认值为INFO。
如需查看日志,请在 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.0到1.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_HEADERS、REQUEST_BODY、
RESPONSE_HEADERS 或 RESPONSE_BODY。
|
per_processing_request_info[].latency |
时长 | 从向扩展程序发送 ProcessingRequest
消息的第一个字节到收到
ProcessingResponse 消息的最后一个字节所用的时间。 |
per_processing_request_info[].processing_effect |
枚举 | 处理请求中每个事件的处理结果。
仅适用于区域级外部应用负载平衡器、区域级内部应用负载平衡器和
跨区域内部应用负载平衡器。
可以是下列值之一:
|
per_processing_request_info[].processing_effect_details |
字符串 | 当 processing_effect 为 MUTATION_REJECTED 时,有关变更被拒绝的原因的详细信息。仅适用于区域级外部应用负载平衡器、 区域级内部应用负载平衡器和跨区域内部应用负载平衡器。 |
resource |
字符串 | 扩展程序资源的名称 |
监控
本部分介绍了如何使用 Cloud Monitoring 信息中心 查看使用 Service Extensions 配置的应用负载平衡器插件的指标。您可以从插件角度或负载均衡器角度监控插件。
从插件角度进行监控
本部分介绍了从插件角度进行 Service Extensions 监控。
如需详细了解 Service Extensions 指标类型, 请参阅Google Cloud 指标 页面。
查看 Service Extensions 的 Monitoring 信息中心
如需查看 Service Extensions 的 Monitoring 信息中心,请执行以下操作:
- 在 Google Cloud 控制台中,前往 Service Extensions 页面。
- 点击插件 标签页。
- 点击插件名称。
- 在插件详情 页面上,点击监控 标签页。
- 如需查看插件生命周期操作的指标,请从
操作过滤条件 列表中选择值。默认情况下,系统会选择
HTTP request header和HTTP response header值。 - 如需查看特定插件版本的指标,请从 插件版本过滤条件 列表中选择一个值。默认情况下,系统会显示 所有版本的指标。
- 如需更改要查看数据的时间段,请从时间选择器中选择一个
预定义的时间段,或点击自定义并指定一个
开始时间和结束时间。默认情况下,选择器设置为
1 day。
在监控 页面上,指标图表显示的信息可 帮助您监控插件性能。
Service Extensions 的插件指标
您可以从 Service Extensions 角度监控插件的以下指标。这些指标具有前缀
networkservices.googleapis.com/wasm_plugin/。该前缀已从表格中的条目中省略。
| 指标类型 | 显示名
种类、类型、单位 说明 |
|---|---|
invocation_count
|
Wasm 插件调用次数
DELTA, INT64, 1
在所选时间范围内插件的调用次数。每个插件回调 调用都算作一个单独的插件调用。 |
invocation_latencies
|
Wasm 插件调用延迟
DELTA, DISTRIBUTION, us
插件的本地执行时间(以毫秒为单位)。该指标包含每个 回调的标签分隔条目。 |
cpu/usage_times
|
Wasm 插件标准化 CPU 使用率
DELTA, DISTRIBUTION, us{CPU}
插件调用的 CPU 使用时间(以微秒为单位)。 |
memory/bytes_used
|
Wasm 插件内存使用量
GAUGE, DISTRIBUTION, By
Wasm 插件虚拟机分配的总内存(以字节为单位)。 |
从负载均衡器角度进行监控
本部分介绍了从负载均衡器角度对插件进行 Service Extensions 监控。
查看 Cloud Load Balancing 的 Monitoring 信息中心
应用负载平衡器会将监控数据导出到 Cloud Monitoring。
Monitoring 指标适用于以下用途:
- 评估负载均衡器的配置、使用情况和性能
- 问题排查
- 提高资源利用率并改善用户体验
如需查看预定义的信息中心,请按以下步骤操作:
- 在 Google Cloud 控制台中,前往 信息中心概览 页面。
- 在类别 部分中,点击 GCP 。
- 如需查看所有负载平衡器的信息中心列表,请在 GCP 信息中心列表中,点击名为Google Cloud 负载平衡器的信息中心。 如需查看特定负载均衡器的信息中心,请在列表中找到该负载均衡器 然后点击其名称。
- 如需仅查看负载平衡器的预定义信息中心,请选择 相应的信息中心。
除了 Monitoring 中的预定义信息中心,您还可以 通过 Cloud Monitoring API创建自定义信息中心、设置提醒和查询指标。
Cloud Load Balancing 的插件指标
您可以从 Cloud Load Balancing 角度监控插件的以下指标。
在预览版中,您可以监控所有类型的应用负载平衡器上的扩展程序的以下指标
。这些指标具有前缀
networkservices.googleapis.com。该前缀已从下表中的条目中省略。
下表提供了每个指标的指标类型、显示名、种类、类型、单位和说明。
| 指标类型 | 显示名
种类、类型、单位 说明 |
|---|---|
extension/invocation_count
|
扩展程序调用次数
DELTA, INT64, 1
发送到扩展程序的调用次数。 |
extension/invocation_latencies
|
扩展程序调用延迟
DELTA、DISTRIBUTION、ms
根据每次扩展程序调用的延迟计算出的分布。 |
extension/sent_chunks_count
|
扩展程序发送的块数
DELTA, INT64, 1
仅适用于 request_body 和 response_body 事件。
发送到扩展程序的数据块数。 |
extension/received_chunks_count
|
扩展程序收到的块数
DELTA, INT64, 1
仅适用于 request_body 和 response_body 事件。
从扩展程序收到的块数。 |
extension/failed_open_count
|
扩展程序打开失败的调用次数
DELTA, INT64, 1
当系统配置为 打开失败且允许请求继续进行时,调用失败的次数。 |
extension/mutation_rejections_count
|
扩展程序变更拒绝次数
DELTA, INT64, 1
请求标头、正文或预告片变更但 被拒绝的调用次数。拒绝可能因多种原因而发生,例如变更 无效或超出大小限制。 |
extension/sent_bytes_count
|
扩展程序发送的字节数
DELTA, INT64, By
发送到扩展程序的字节数。 |
extension/received_bytes_count
|
扩展程序收到的字节数
DELTA, INT64, By
从扩展程序收到的字节数。 |
您还可以监控以下指标。这些指标具有前缀
loadbalancing.googleapis.com/。该前缀已从表格中的条目中省略。
| 指标类型 | 显示名
种类、类型、单位 说明 |
|---|---|
https/backend_request_count、
https/external/regional/backend_request_count、
https/internal/backend_request_count
|
后端请求数
DELTA, INT64, 1
从应用负载平衡器调用插件的次数。 |
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
|
后端请求字节数
DELTA、INT64、By
从负载均衡器发送到插件的字节数。 |
https/backend_response_bytes_count,
https/external/regional/backend_response_bytes_count,
https/internal/backend_response_bytes_count
|
后端响应字节数
DELTA、INT64、By
负载均衡器从 扩展程序后端收到的字节数。 |
查看插件指标
如需查看特定插件的指标,请执行以下操作:
在 Google Cloud 控制台中,前往 Metrics Explorer 页面。
在指标 元素中,展开选择指标 菜单。然后,执行以下操作:
从资源列表中,选择相应的应用负载平衡器规则。
从指标类别列表中,选择 Https 。
从指标列表中,选择一个插件指标。
点击应用 。
在过滤条件 元素中,执行以下操作:
选择 backend_target_type 标签,并将值设置为
WASM_PLUGIN。选择 backend_target_name 标签,并将插件名称设置为值。
如需详细了解负载均衡器指标类型,请参阅 指标 页面的 Google Cloud 负载均衡部分。