本页面介绍了如何使用指标来监控 Policy Controller。
Policy Controller 包含与政策使用情况相关的多个指标。例如,有指标记录限制条件和限制条件模板的数量,以及检测到的审核违规次数。为了创建并记录这些指标,Policy Controller 会使用 OpenTelemetry。您可以配置 Policy Controller 以将这些指标导出到 Prometheus 或 Cloud Monitoring。用于导出指标的默认设置会将指标同时导出到 Prometheus 和 Cloud Monitoring。
价格
Policy Controller 指标使用 Google Cloud Managed Service for Prometheus 将指标加载到 Cloud Monitoring 中。Cloud Monitoring 会根据注入的样本数量收取这些指标的注入费用。
如需了解详情,请参阅 Cloud Monitoring 价格。
配置指标导出
您可以配置 Policy Controller 导出其指标的方式。您可以在安装 Policy Controller 时,选择 Prometheus 和/或 Cloud Monitoring,也可以两者都不选。默认情况下,Policy Controller 会尝试将指标同时导出到 Prometheus 和 Cloud Monitoring。
将指标导出到 Cloud Monitoring
如需允许 Policy Controller 将指标导出到 Cloud Monitoring,Policy Controller 使用的服务账号必须在项目中具有 roles/monitoring.metricsWriter
IAM 角色。如需授予此角色,请执行以下操作之一:
如果 Policy Controller 在具有默认服务账号的 Google Cloud 环境中运行,请向该服务账号授予项目的
roles/monitoring.metricsWriter
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/monitoring.metricsWriter
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目 ID。PROJECT_NUMBER
:您的数字 Google Cloud项目编号。
如果启用了 Workload Identity Federation for GKE 或舰队 Workload Identity Federation,请向 Policy Controller 使用的 Kubernetes ServiceAccount 授予项目的
roles/monitoring.metricsWriter
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.[gatekeeper-system/gatekeeper-admin]" \ --role=roles/monitoring.metricWriter
将
PROJECT_ID
替换为集群的 Google Cloud 项目 ID。
您可以使用 Metrics Explorer 或使用 Cloud Monitoring API 查看这些指标。
将指标导出到 Prometheus
Policy Controller 通过 gatekeeper-system
命名空间下的 gatekeeper-controller-manager-*
Pod 的端口 8888 将指标导出到 Prometheus。
如果 Policy Controller 在配置了 Google Cloud Managed Service for Prometheus 的集群上运行,这些指标会自动收集并存储在 Cloud Monitoring 中。这也适用于在安装 Policy Controller 后启用 Google Cloud Managed Service for Prometheus 的集群。您可能还需要向 Google Cloud Managed Service for Prometheus 使用的默认 Compute Engine 服务账号授予其他权限,具体取决于您的政策。如需详细了解如何向 Google Cloud Managed Service for Prometheus 授予权限,请参阅启用托管式收集功能:GKE。如需详细了解如何配置 Google Cloud Managed Service for Prometheus,请参阅托管式收集使用入门。
如需详细了解 Cloud Monitoring 的价格,请参阅 Google Cloud Managed Service for Prometheus 的价格。
如需查看如何使用 Google Cloud Managed Service for Prometheus 解决方案查看指标的示例,请参阅使用 Cloud Monitoring 进行查询。
查看指标
Policy Controller 指标会以 Prometheus 格式导出到您的 Cloud Monitoring 项目。因此,您可以使用 Cloud Monitoring API 和 Google Cloud 控制台中的信息中心查询指标。您可以修改此信息中心,以满足您的业务和运维需求。
要查询 Cloud Monitoring API,请使用 Prometheus 查询语言 (PromQL)(Kubernetes 指标的实际查询语言)或监控查询语言 (MQL)(Google 的专有指标查询语言)。
您可以在 Cloud Monitoring 的“信息中心”页面中搜索“Policy Controller”,然后使用模板设置信息中心。如需详细了解如何创建和修改信息中心模板,请参阅 Cloud Monitoring 文档。
创建提醒
如需在指标达到特定阈值时收到通知,请在 Cloud Monitoring 中创建提醒政策。
第三方集成
使用 Cloud Monitoring API,任何第三方可观测性工具都可以注入 Policy Controller 指标。
例如,如果您使用的是 Grafana 信息中心,请在 Grafana 中将 Cloud Monitoring API 添加为数据源。如需了解详情,请参阅 Grafana 文档中的 Google Cloud Monitoring。
可用指标
如果 Policy Controller 已在集群上启用并配置为导出到 Cloud Monitoring,则可以查询以下指标(前缀均为 OpenCensus/
):
名称 | 类型 | 标签 | 说明 |
---|---|---|---|
OpenCensus/audit_duration_seconds |
累计 | 审核周期持续时间分布 | |
OpenCensus/audit_last_run_time |
仪表盘 | 自上次审核运行时以来的 Epoch 时间戳,以秒为单位,以浮点数表示 | |
OpenCensus/constraint_template_ingestion_count |
累计 | status | 限制条件模板提取操作的总数 |
OpenCensus/constraint_template_ingestion_duration_seconds |
累计 | status | 限制条件模板提取持续时间分布 |
OpenCensus/constraint_templates |
仪表盘 | status | 当前限制条件模板数量 |
OpenCensus/validation_request_count |
计数器 | admission_status | 来自 API 服务器的准入请求计数 |
OpenCensus/validation_request_duration_seconds |
累计 | admission_status | 准入请求持续时间分布 |
OpenCensus/violations |
仪表盘 | enforcement_action | 在上一个审核周期中检测到的审核违规次数 |
OpenCensus/watch_manager_intended_watch_gvk |
仪表盘 | 打算监控多少个唯一的 GroupVersionKinds Policy Controller。此指标是同步资源和限制条件的结合。 | |
OpenCensus/watch_manager_watched_gvk |
仪表盘 | 实际上正在监控多少个唯一的 GroupVersionKinds Policy Controller。该指标的收敛于等于 OpenCensus/watch_manager_intended_watch_gvk 。 |
如果将 Policy Controller 配置为导出到 Prometheus,则可以查询以下指标(前缀均为 Prometheus/
):
名称 | 类型 | 标签 | 说明 |
---|---|---|---|
Prometheus/gatekeeper_audit_duration_seconds/histogram |
累计 | 审核周期持续时间分布 | |
Prometheus/gatekeeper_audit_last_run_end_time/gauge |
仪表盘 | 上次审核运行结束时的纪元时间戳,以秒为单位,用浮点数表示 | |
Prometheus/gatekeeper_audit_last_run_time/gauge |
仪表盘 | 上次审核运行开始时的纪元时间戳,以秒为单位,用浮点数表示 | |
Prometheus/gatekeeper_constraint_template_ingestion_count/counter |
累计 | status | 限制条件模板提取操作的总数 |
Prometheus/gatekeeper_constraint_template_ingestion_duration_seconds/histogram |
累计 | status | 限制条件模板提取持续时间分布 |
Prometheus/gatekeeper_constraint_templates/gauge |
仪表盘 | status | 当前限制条件模板数量 |
Prometheus/gatekeeper_validation_request_count/counter |
累计 | admission_status、admission_dryrun | 来自 API 服务器的准入请求计数 |
Prometheus/gatekeeper_validation_request_duration_seconds/histogram |
累计 | admission_status | 准入请求持续时间分布 |
Prometheus/gatekeeper_violations/gauge |
仪表盘 | enforcement_action | 在上一个审核周期中检测到的审核违规次数 |
Prometheus/gatekeeper_watch_manager_intended_watch_gvk/gauge |
仪表盘 | 打算监控多少个唯一的 GroupVersionKinds Policy Controller。此指标是同步资源和限制条件的结合。 | |
Prometheus/gatekeeper_watch_manager_watched_gvk/gauge |
仪表盘 | 实际上正在监控多少个唯一的 GroupVersionKinds Policy Controller。该指标的收敛于等于 Prometheus/gatekeeper_watch_manager_intended_watch_gvk/gauge 。 |