控制平面日志记录和监控

本文档演示了如何使用 Cloud LoggingCloud Monitoring 来查看 Cloud Service Mesh 控制平面的日志和指标。

使用服务网格可以观察进出服务的流量,从而实现更丰富的监控和调试,而无需更改服务本身的代码。日志条目可提供对服务网格进行问题排查的重要信息,包括成功连接和断开连接的记录、配置不正确的客户端的错误报告以及 API 资源冲突提醒。

使用场景

以下是控制平面日志记录和监控的三个用例:

  • 适用于 Cloud Service Mesh 控制平面的 Cloud Logging:您可以使用 Logging 的所有内置功能安全地存储、搜索和分析所有 Cloud Service Mesh 日志记录数据和事件并为其设置提醒。当 Envoy 或 gRPC 客户端连接或断开连接以及检测到配置问题时,Cloud Service Mesh 都会将日志导出到 Logging。
  • 适用于 Cloud Service Mesh 控制平面的 Cloud Monitoring:Cloud Service Mesh 会将用于指示连接到 Cloud Service Mesh 控制平面的客户端数量的关键指标导出到 Monitoring。您可以在 Monitoring 中设置信息中心,并实时地直观呈现此指标,以便在客户端连接和断开连接时监控网格的运行状况。您还可以为网格设置 SLO。
  • 立即排查问题:默认情况下,Cloud Service Mesh 会将遥测结果导出到 Logging 和 Monitoring。由于您无需进行额外设置即可配置日志记录和监控,因此您可以随时排查问题,包括在首次设置网格时。

查看日志

如需查看 Cloud Service Mesh 日志,请使用日志浏览器。以下部分介绍查看 Cloud Service Mesh 日志的示例查询,但您可以使用上一个链接创建自己的查询。

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

    前往日志浏览器

  2. 资源列表中,
    • 如果您使用服务路由 API,请选择 Gateway ScopeMesh
    • 如果您使用的是旧版 API,请选择 GCE Network
  3. 日志名称列表中,选择 trafficdirector.googleapis.com/events
  4. 点击运行查询

Cloud Service Mesh 日志条目字段

字段 说明
node_id xDS 客户端节点的 ID,由 xDS 客户端提供。
client_type 连接到 Cloud Service Mesh 的 xDS 客户端的类型。可能的值:
  • ENVOY
  • GRPC-JAVA
  • GRPC-C++
  • GRPC-PYTHON
  • GRPC-GO
  • UNKNOWN
node_ip 客户端提供的节点的 IP 地址。
api_version xDS 客户端用于连接到 Cloud Service Mesh 的 xDS API 版本。可能的值有 V2V3
description 事件的文本说明,以及其他详细信息。

日志条目示例

日志条目示例 说明
"Cloud Service Mesh could not find any configuration for xDS client." 当 xDS 客户端因为没有配置而被 Cloud Service Mesh 拒绝时,系统会生成此日志。这可能是由于 Cloud Service Mesh 相关 API 资源设置不完整所致。
"Client has successfully connected." 每当客户端成功连接到 Cloud Service Mesh 时,系统都会生成此类日志消息。
"Client has successfully disconnected." 每当已建立连接的客户端与 Cloud Service Mesh 断开连接时,系统都会生成此类日志消息。
"TRAFFICDIRECTOR_INTERCEPTION_PORT metadata variable is not set. Routing configuration for the interception listener exists, but will be ignored." 如果 Cloud Service Mesh 资源配置正确,但没有在 xDS 客户端节点元数据中设置 TRAFFICDIRECTOR_INTERCEPTION_PORT 变量,则系统会生成此类日志消息,因此无法将此配置添加到客户端。
"Interception listener is built on the given port 15001, but routing configuration does not exist for it." 如果在 xDS 客户端节点元数据中设置了 TRAFFICDIRECTOR_INTERCEPTION_PORT 变量,但没有为 Cloud Service Mesh 配置任何资源来生成完整的 xDS 响应,则系统会生成此类日志消息。
"Sending ADS response from Cloud Service Mesh failed. Last discovery request from the node had an incorrect version and/or nonce." 当 Cloud Service Mesh 由于来自 xDS 客户端的通信被损坏而无法正确处理 xDS 响应时,就会生成此类日志消息。此消息表明客户端存在实现错误。我们建议检查客户端的日志。
“客户端正在向后端服务 backend_service_id 发送跨区域流量。来源区域:source_region 目标区域:destination_region1, destination_region2 当客户端向 Cloud Service Mesh 报告其从来源区域向一个或多个目标区域发送跨区域流量时,就会生成此类日志消息。

查看指标

Cloud Service Mesh 会将三个指标导出到 Cloud Monitoring:xDS API 连接的串流请求数按区域划分的请求数xDS API 连接的串流表示连接到控制平面的客户端数量;请求数表示发送到后端服务的请求数量,按来源区域、目标区域和请求状态分组。按可用区计数的请求数量表示发送到后端服务的请求数(按来源可用区、目标可用区和请求状态分组)。如需查看这些指标,请使用 Metrics Explorer

如需查看 Cloud Service Mesh 指标,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Metrics Explorer 页面。

    打开 Metrics Explorer

  2. 资源类型列表中,选择一个资源。
    • 如果您使用服务路由 API,请选择 Gateway ScopeMesh
    • 如果您使用的是旧版 API,请选择 Network
  3. 指标列表中,选择 connected_clients
  4. 返回到资源类型列表,然后选择 Compute Engine Backend Service
  5. 指标列表中,选择 Request countRequest count by zone

或者,您可以使用查询来查看跨区域请求计数:

  1. 选择 MQL
  2. 在该字段中输入以下示例查询:
    fetch gce_backend_service
    | metric 'trafficdirector.googleapis.com/xds/server/request_count'
    | filter ( ne(metric.source_region, metric.destination_region))
    | align rate(1m)
    | every 1m
    | group_by [metric.source_region, metric.destination_region, resource.backend_service_id],
    [value_request_count_aggregate: aggregate(value.request_count)]
    
  3. 点击运行查询

设置基于日志的指标和提醒

以下步骤要求您设置基于日志的指标。如需详细了解如何设置基于日志的指标,请参阅概览

您可以配置提醒,以便在包含的日志中显示用户指定的消息时收到通知。如果发生意外情况,这些提醒可以通知操作者。例如,如果 Cloud Service Mesh 配置更改导致 API 资源冲突,您会收到有关错误消息的提醒。如需为基于日志的指标设置提醒,请参阅配置图表和提醒