本页面介绍了如何使用指标来监控 Policy Controller。
Policy Controller 包含与政策使用情况相关的多个指标。例如,有指标记录限制条件和限制条件模板的数量,以及检测到的审核违规次数。为了创建并记录这些指标,Policy Controller 会使用 OpenTelemetry。您可以配置 Policy Controller 以将这些指标导出到 Prometheus 或 Cloud Monitoring。用于导出指标的默认设置会将指标同时导出到 Prometheus 和 Cloud Monitoring。
配置指标导出
您可以配置 Policy Controller 导出其指标的方式。您可以在安装 Policy Controller 时,选择 Prometheus 和/或 Cloud Monitoring,也可以两者都不选。默认情况下,Policy Controller 会尝试将指标同时导出到 Prometheus 和 Cloud Monitoring。
将指标导出到 Cloud Monitoring
如果 Policy Controller 在具有默认服务账号的 Google Cloud 环境中运行,则 Policy Controller 会自动将指标导出到 Cloud Monitoring。
如果启用了 GKE Workload Identity Federation for GKE 或舰队 Workload Identity Federation for GKE,请通过运行以下命令来允许 Policy Controller 发送指标:
GKE on VMware 集群、GKE on Bare Metal 集群以及 GKE Multi-Cloud 集群(在 AWS 和 Azure 上)会自动注册到启用了舰队适用于 GKE 的工作负载身份联合的项目舰队。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[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,请参阅托管式收集使用入门。
由于 Policy Controller 可与 GKE Enterprise 搭配使用,因此无需额外付费即可使用 Google Cloud Observability,包括 Google Cloud Managed Service for Prometheus。如果您在需要 GKE Enterprise 许可之前安装了 Policy Controller,并且启用了 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 的专有指标查询语言)。
如需创建 Policy Controller 信息中心,请执行以下操作:
在 Google Cloud 控制台中,转到信息中心页面。
在信息中心概览页面上,点击示例库标签页。此标签页会显示您可以导入的所有信息中心。
在类别列中,选择 Anthos Config Management。
在 Anthos Config Management 示例表中,选中 Policy Controller 复选框。
点击 download 导入。
如需创建信息中心,请点击确认窗口中的确认。
如需查看和修改 Policy Controller 信息中心,请执行以下操作:
- 在信息中心概览页面上,选择信息中心列表标签页。
- 选择 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 。 |