使用 Cloud Monitoring 监控 Config Sync

本页面介绍了如何将指标从 Config Sync 发送到 Cloud Monitoring。

Config Sync 使用 OpenTelemetry 来创建、记录和导出其指标。本页面介绍了如何配置 Cloud Monitoring 指标。如需了解导出指标的其他方法,请参阅使用 Prometheus 监控 Config Sync使用自定义监控功能监控 Config Sync

要配置 Cloud Monitoring 指标,您需要具备项目的 iam.serviceAccounts.setIamPolicy 权限。如需查看有关如何查看这些指标的示例,请参阅调试过程示例Cloud Monitoring 中的 OpenCensus 指标一文。

授予 Cloud Monitoring 的指标写入权限

如需为 Config Sync 配置 Cloud Monitoring,您必须向项目中的服务帐号授予指标写入权限。所需的权限取决于 Workload Identity 是否已启用。

使用 Workload Identity 配置 Cloud Monitoring

如果 Workload Identity 已启用,则通过运行以下命令允许 Config Sync 发送指标:

gcloud projects add-iam-policy-binding PROJECT_ID \
   --role=roles/monitoring.metricWriter \
   --member="serviceAccount:PROJECT_ID.svc.id.goog[config-management-monitoring/default]"

PROJECT_ID 替换为集群的项目 ID。

配置不含 Workload Identity 的 Cloud Monitoring

如果 Workload Identity 未启用并且 Config Sync 在 Google Cloud 环境中运行,则您可以使用 Compute Engine 默认服务帐号。如果已停用自动 Editor 角色 (roles/editor) 授权,请运行以下命令,向服务帐号授予 Monitoring Metric Writer (roles/monitoring.metricWriter) IAM 角色:

gcloud projects add-iam-policy-binding PROJECT_ID \
   --role=roles/monitoring.metricWriter \
   --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • PROJECT_NUMBER:您的项目编号。

Cloud Monitoring 中的默认指标列表

名称 类型
api_duration_seconds 分布
apply_duration_seconds 分布
apply_operations_total 计数
declared_resources 最后一个值
internal_errors_total 计数
last_sync_timestamp 最后一个值
pipeline_error_observed 最后一个值
reconciler_errors 最后一个值
resource_fights_total 计数
reconcile_duration_seconds 分布
resource_group_total 最后一个值
resource_count 最后一个值
ready_resource_count 最后一个值
resource_ns_count 最后一个值
cluster_scoped_resource_count 最后一个值
kcc_resource_count 仪表盘

如需在 Cloud Monitoring 中修改指标许可名单,请按照说明使用 ConfigMap 修补 otel 收集器部署

Cloud Monitoring 的调试过程示例

以下 Cloud Monitoring 示例展示了一些模式,当您使用 RootSync 和 RepoSync API 时,它们使用 OpenCensus 指标来检测和诊断与 Config Sync 相关的问题。

指标格式

在 Cloud Monitoring 中,指标采用以下格式:custom.googleapis.com/opencensus/config_sync/METRIC

此指标名称由以下各部分组成:

  • custom.googleapis.com:所有自定义指标都具有此前缀
  • opencensus:已添加此前缀,因为 Config Sync 使用 OpenCensus 库
  • config_sync/:Config Sync 导出到 Cloud Monitoring 的指标具有此前缀
  • METRIC:您要查询的指标的名称

按协调器查询指标

RootSync 和 RepoSync 对象可通过概要指标进行检测,有助于您全面了解 Config Sync 在集群上的运行情况。几乎所有指标都按照协调器名称进行标记,因此您可以查看是否发生了任何错误,并且可以在 Cloud Monitoring 中为其设置提醒。

协调器是部署为 Deployment 的 Pod。它会将清单从可信来源同步到集群。当您创建 RootSync 对象时,如果 RootSync 的名称为 root-sync,则 Config Sync 会创建一个名为 root-reconciler-ROOT_SYNC_NAMEroot-reconciler 的协调器。当您创建 RepoSync 对象时,Config Sync 会创建一个名为 ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTHns-reconciler-NAMESPACE 的协调器(如果 RepoSync 名称为 repo-sync,其中 NAMESPACE 是您在其中创建了 RepoSync 对象的命名空间)。

下图显示了当“可信来源”是 Git 代码库时,协调器 Pod 如何运行:

协调器流

例如,若要在使用 Cloud Monitoring 时按协调器名称进行过滤,请完成以下任务:

  1. 在 Google Cloud 控制台中,转到 Monitoring

    转至 Resources

  2. Monitoring 导航窗格中,点击 Metrics explorer.

  3. 选择指标下拉列表中,添加 custom.googleapis.com/opencensus/config_sync/reconciler_errors

  4. 过滤条件下拉列表中,选择协调方。此时会显示一个过滤条件字段框。

  5. 在过滤条件字段框中,在第一个字段中选择 =,在第二个字段中选择协调器名称(例如 root-reconciler)。

  6. 点击应用

您现在可以查看 RootSync 对象的指标。

如需详细了解如何按特定数据类型进行过滤,请参阅过滤数据

按组件和状态查询 Config Sync 操作

启用 RootSync 和 RepoSync API 后,协调器会处理从可靠来源导入和搜寻以及同步到集群的操作。reconciler_errors 指标按组件进行标记,因此您可以查看发生错误的位置。

例如,若要在使用 Cloud Monitoring 时按组件过滤,请完成以下任务:

  1. 在 Google Cloud 控制台中,转到 Monitoring

    转至 Resources

  2. Monitoring 导航窗格中,点击 Metrics explorer.

  3. 选择指标下拉列表中,添加 custom.googleapis.com/opencensus/config_sync/reconciler_errors

  4. 过滤条件下拉列表中,选择组件。此时会显示一个过滤条件字段框。

  5. 在过滤条件字段中,在第一个框中选择 =,在第二个框中选择 source

  6. 点击应用

您现在可以查看从协调者的可靠来源进行采购时发生的错误。

您还可以通过查询以下指标并按 status 标记进行过滤,自行检查来源的指标并自行同步进程:

custom.googleapis.com/opencensus/config_sync/parser_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds