本页面详细介绍了如何使用 GDC 控制台和 Cortex 端点的 curl 工具查询和直观呈现公开提醒,以便了解问题并解决问题。
根据 Google Distributed Cloud (GDC) 气隙设备环境中的日志和指标创建提醒规则
后,您
可以开始监控项目中的公开提醒。您可以在 GDC 控制台上直观呈现和过滤系统事件触发的提醒,也可以使用 curl 工具直接从 Cortex 访问这些提醒,以便进行灵活的脚本编写和自动化。
您可以通过以下两种方法之一访问公开提醒:
- GDC 控制台:在集成面板中直观呈现提醒数据 ,这些面板包含特定数据源的提醒数量 、严重级别、持续时间、状态、消息和标签等信息。GDC 控制台提供了一个用户友好的界面,用于过滤和分析系统组件中的提醒。
- Cortex Alertmanager 端点:对于更高级的用例,请在命令行中使用
curl工具直接查询您的 项目 Cortex 实例。 Cortex 会存储项目的 Alertmanager 提醒,并提供 HTTP 端点以进行程序化访问。通过此访问权限,您可以导出数据、自动执行任务、配置 cron 作业以及构建自定义集成。
准备工作
如需获得查询和可视化提醒所需的权限,请让项目 IAM 管理员在项目命名空间中为您授予其中一个关联的项目 Cortex Alertmanager 角色。根据您需要的访问权限级别,您可以在项目中获得此资源的 Editor 或 Viewer 角色。
如需获得导出日志所需的权限,请让项目 IAM 管理员为您授予 Project Grafana Viewer (project-grafana-viewer) 角色。通过这种基于角色的访问权限控制流程,您可以安全地访问数据可视化图。如需详细了解这些角色,请参阅准备 IAM 权限。
下表总结了 PA and AO persona 的 Role 要求。
| 角色 | 对象 | 集群 | 角色 | 命名空间 | 群组/用户 | 配置 |
|---|---|---|---|---|---|---|
| PA | alertmanager | org-admin | project-cortex-alertmanager-viewer |
platform-obs | 群组 | 1 |
| PA | alertmanager | org-admin | project-cortex-alertmanager-viewer |
platform-obs | 用户 | 2 |
| AO | alertmanager | org-admin | project-cortex-alertmanager-viewer |
PROJECT_NAMESPACE | 群组 | 1 |
| AO | alertmanager | org-admin | project-cortex-alertmanager-viewer |
PROJECT_NAMESPACE | 用户 | 2 |
请适当替换以下变量:
| 变量 | 说明 |
|---|---|
KUBECONFIG |
您将需要包含此 RoleBinding 将应用到的 NAMESPACE 的特定集群的 kubeconfig。 |
RULE_NAME |
此 RoleBinding 资源在命名空间中的唯一名称。例如,pa-cortex-alertmanager-viewer。 |
NAMESPACE |
将创建和应用此 RoleBinding 的 Kubernetes 命名空间。请在之前的表格中查找 Namespace 列。 |
EMAIL_ADDRESS |
被授予角色的用户的标识符。这通常是一个电子邮件地址。例如,platform-administrator@example.com。 |
ROLE |
包含您要授予用户的权限的 Role 的名称。请在之前的表格中查找可用的角色 |
GROUP_NAME |
PA/AO 用户所属的 Group 的名称。例如,pa-group。 |
ZONE |
区域的名称 |
配置 1
此配置向用户组授予访问 org 集群中的 PA/AO 提醒的权限。设置此配置后,请参阅本文档的控制台部分,以在 GDC 控制台上查看提醒。
Kubectl 命令
这是一般命令格式:
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-alertmanager-viewer示例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --group=my-team --namespace=platform-obsYaml 文件
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: Group name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-alertmanager-viewer apiGroup: rbac.authorization.k8s.io
配置 2
此配置向用户授予访问 org 集群中的 PA/AO 提醒的权限。设置此配置后,请参阅本文档的控制台部分,以在 GDC 控制台上查看提醒。
Kubectl 命令
这是一般命令格式:
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-alertmanager-viewer示例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --user=my-email@example.com --namespace=platform-obsIAC 文件路径
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>Yaml 文件
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: User name: EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-alertmanager-viewer apiGroup: rbac.authorization.k8s.io如需详细了解这些角色,请参阅 准备 IAM 权限
Grafana 端点
对于应用运维人员 (AO):
打开以下网址以访问项目的端点:
https://GDC_URL/PROJECT_NAMESPACE/grafana
替换以下内容:
- GDC_URL:您在 GDC 中的组织的网址。
- PROJECT_NAMESPACE:项目的命名空间。
项目的界面包含默认信息中心,例如包含提醒信息的提醒 - 概览 信息中心。通过界面查询提醒,您可以直观地从项目中检索提醒信息,并获得资源的集成视图,以便了解问题并快速解决问题。
对于平台管理员 (PA):
打开以下网址以访问 platform-obs 项目的端点:
https://GDC_URL/platform-obs/grafana
将 GDC_URL 替换为您在 GDC 中的组织的网址。
系统监控实例的用户界面 (UI) 包含默认信息中心,例如包含数据可观测性提醒信息的提醒 - 概览 信息中心。通过界面查询提醒,您可以直观地从项目中检索提醒信息,并获得资源的集成视图,以便了解问题并快速解决问题。

图 1. Grafana 界面上的提醒 - 概览 信息中心。
查看和过滤公开提醒
选择以下方法之一,从项目命名空间查询和过滤公开提醒:
控制台
从 GDC 控制台查看项目中的公开提醒:
- 登录 GDC 控制台。
- 在 GDC 控制台中,选择您的项目。
- 在导航菜单中,选择 运维 > 提醒。
- 选择提醒 标签页。
- 查看提醒列表。
- 在已打开的提醒 部分,点击过滤条件 以仅显示公开提醒。您还可以按其他属性名称或值过滤提醒。
- 点击提醒名称可查看提醒详情。
Cortex 端点
本部分介绍如何使用 Cortex Alertmanager 端点访问提醒。
确定 Cortex 端点
以下网址是项目的 Cortex 实例的端点:
https://GDC_URL/PROJECT_NAMESPACE/cortex/alertmanager/
替换以下内容:
GDC_URL:您在 GDC 中的组织的网址。PROJECT_NAMESPACE:您的项目命名空间。例如,
org-1组织中platform-obs项目的 Cortex 端点为https://org-1/platform-obs/cortex/alertmanager/。
对 curl 请求进行身份验证
- 下载并安装 gdcloud CLI。
设置 gdcloud
core/organization_console_url属性:gdcloud config set core/organization_console_url https://GDC_URL-
gdcloud auth login 使用您的用户名和密码进行身份验证并登录。
登录成功后,您可以通过
gdcloud auth print-identity-token命令在 c网址 请求中使用授权标头。如需了解详情,请参阅 gdcloud auth。
调用 Cortex 端点
完成以下步骤,使用 curl
工具访问 Cortex 端点:
- 对
curl请求进行身份验证。 使用
curl调用 Cortex 端点 并 使用标准 Alertmanager API 规范 (https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers) 扩展网址以查询提醒。以下是
curl请求的示例:curl https://GDC_URL/PROJECT_NAME/cortex/alertmanager/api/v1/alertmanagers \ -H "Authorization: Bearer $(gdcloud auth print-identity-token \ --audiences=https://GDC_URL)"您可以在命令后获取输出。API 响应采用 JSON 格式。
Alertmanager
借助 Alertmanager,您可以监控来自客户端应用的提醒通知。您可以使用 Alertmanager 检查和关闭提醒,并过滤或分组提醒:

图 2. 用于从 Alertmanager 查询审核日志的菜单选项。
预定义的提醒政策
下表列出了 Prometheus 中的预安装提醒规则:
| 名称 | 说明 |
|---|---|
| KubeAPIDown(关键) | KubeAPI 已从 Prometheus 目标发现中消失了 15 分钟。 |
| KubeClientErrors(警告) | Kubernetes API 服务器客户端错误率超过 0.01,持续 15 分钟。 |
| KubeClientErrors(关键) | Kubernetes API 服务器客户端错误率超过 0.1,持续 15 分钟。 |
| KubePodCrashLooping(警告) | Pod 处于崩溃循环状态的时长已超过 15 分钟。 |
| KubePodNotReady(警告) | Pod 处于就绪状态的时长已超过 15 分钟。 |
| KubePersistentVolumeFillingUp(关键) | 已声明的 PersistentVolume 的可用字节数小于 0.03。 |
| KubePersistentVolumeFillingUp(警告) | 已声明的 PersistentVolume 的可用字节数小于 0.15。 |
| KubePersistentVolumeErrors(关键) | 永久性卷处于“失败”或“待处理”阶段达到 5 分钟。 |
| KubeNodeNotReady(警告) | 节点处于未读状态超过 15 分钟。 |
| KubeNodeCPUUsageHigh(关键) | 节点 CPU 使用率超过 80%。 |
| KubeNodeMemoryUsageHigh(关键) | 节点内存用量超过 80%。 |
| NodeFilesystemSpaceFillingUp(警告) | 节点文件系统使用量超过 60%。 |
| NodeFilesystemSpaceFillingUp(关键) | 节点文件系统使用量超过 85%。 |
| CertManagerCertExpirySoon(警告) | 证书将于 21 天后过期。 |
| CertManagerCertNotReady(关键) | 在 10 分钟后,证书尚未准备好处理流量。 |
| CertManagerHittingRateLimits(严重) | 创建和续订证书达到速率限制已有 5 分钟。 |
| DeploymentNotReady(严重)。 | 组织管理员集群上的 Deployment 处于非就绪状态的时长已超过 15 分钟。 |
示例 alertmanagerConfigurationConfigmaps
alertmanagerConfigurationConfigmaps 列出的 ConfigMap 中的配置的语法必须遵循 https://prometheus.io/docs/alerting/latest/configuration/
apiVersion: observability.gdc.goog/v1alpha1
kind: ObservabilityPipeline
metadata:
# Choose namespace that matches the project's namespace
namespace: kube-system
name: observability-config
# Configure Alertmanager
alerting:
# Storage size for alerting data within organization
# Permission: PA
localStorageSize: 1Gi
# Permission: PA & AO
# alertmanager config must be under the key "alertmanager.yml" in the configMap
alertmanagerConfig: <configmap-for-alertmanager-config>
# Permission: PA
volumes:
- <volume referenced in volumeMounts>
# Permission: PA
volumeMounts:
- <volumeMount referenced in alertmanagerConfig>
示例规则配置
# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringRule
metadata:
# Choose namespace that contains the metrics that rules are based on
# Note: alert/record will be produced in the same namespace
namespace: g-fleetns-a
name: alerting-config
spec:
# Rule evaluation interval
interval: <duration>
# Configure limit for number of alerts (0: no limit)
# Optional, Default: 0 (no limit)
limit: <int>
# Configure record rules
recordRules:
# Define which timeseries to write to (must be a valid metric name)
- record: <string>
# Define PromQL expression to evaluate for this rule
expr: <string>
# Define labels to add or overwrite
# Optional, Map of {key, value} pairs
labels:
<labelname>: <labelvalue>
# Configure alert rules
alertRules:
# Define alert name
- alert: <string>
# Define PromQL expression to evaluate for this rule
# https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
expr: <string>
# Define when an active alert moves from pending to firing
# Optional, Default: 0s
for: <duration>
# Define labels to add or overwrite
# Required, Map of {key, value} pairs
# Required labels:
# severity: [error, critical, warning, info]
# code:
# resource: component/service/hardware related to alert
# additional labels are optional
labels:
severity: <enum: [error, critical, warning, info]>
code:
resource: <Short name of the related operable component>
<labelname>: <tmpl_string>
# Define annotations to add
# Optional, Map of {key, value} pairs
# Recommended annotations:
# message: value of Message field in UI
# expression: value of Rule field in UI
# runbookurl: URL for link in Actions to take field in UI
annotations:
<labelname>: <tmpl_string>
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
# Choose namespace that contains the logs that rules are based on
# Note: alert/record will be produced in the same namespace
namespace: g-fleetns-a
name: alerting-config
spec:
# Choose which log source to base alerts on (Operational/Audit/Security Logs)
# Optional, Default: Operational
source: <string>
# Rule evaluation interval
interval: <duration>
# Configure limit for number of alerts (0: no limit)
# Optional, Default: 0 (no limit)
limit: <int>
# Configure record rules
recordRules:
# Define which timeseries to write to (must be a valid metric name)
- record: <string>
# Define LogQL expression to evaluate for this rule
# https://grafana.com/docs/loki/latest/rules/
expr: <string>
# Define labels to add or overwrite
# Optional, Map of {key, value} pairs
labels:
<labelname>: <labelvalue>
# Configure alert rules
alertRules:
# Define alert name
- alert: <string>
# Define LogQL expression to evaluate for this rule
expr: <string>
# Define when an active alert moves from pending to firing
# Optional, Default: 0s
for: <duration>
# Define labels to add or overwrite
# Required, Map of {key, value} pairs
# Required labels:
# severity: [error, critical, warning, info]
# code:
# resource: component/service/hardware related to alert
# additional labels are optional
labels:
severity: <enum: [error, critical, warning, info]>
code:
resource: <Short name of the related operable component>
<labelname>: <tmpl_string>
# Define annotations to add
# Optional, Map of {key, value} pairs
# Recommended annotations:
# message: value of Message field in UI
# expression: value of Rule field in UI
# runbookurl: URL for link in Actions to take field in UI
annotations:
<labelname>: <tmpl_string>
通过 HTTP API 查询提醒
可观测性平台公开了 HTTP API 端点,用于从项目中查询和读取指标、提醒和其他时序数据,以进行系统监控。直接从可观测性 HTTP API 查询提醒,以根据您的用例设置自动化任务、调整响应和构建集成。例如,将输出插入另一个命令、将详细信息导出为文本文件格式,或配置 Linux cron 作业。您可以从命令行界面 (CLI) 或网络浏览器调用可观测性 HTTP API,并以 JSON 格式获取结果。
本部分介绍如何使用 API 规范从 CLI 调用可观测性 HTTP API 端点以查询提醒。
直接从可观测性 HTTP API 查询提醒,以根据您的用例设置自动化任务、调整响应和构建集成。例如,将输出插入另一个命令、将详细信息导出为文本文件格式,或配置 Linux cron 作业。您可以从命令行界面 (CLI) 或网络浏览器调用可观测性 HTTP API,并以 JSON 格式获取结果。
本部分介绍如何使用 Alertmanager API 规范从 CLI 调用可观测性 HTTP API 端点以查询指标。
准备工作
如需获得访问可观测性 HTTP API 端点所需的权限,请让项目 IAM 管理员在项目命名空间中为您授予 Project Cortex Alertmanager Viewer (project-cortex-alertmanager-viewer) 角色。
项目 IAM 管理员可以通过创建角色绑定来授予您访问权限:
a. 基础架构运维人员 (IO) 根管理员 - Project Cortex Alertmanager Viewer:
kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
io-cortex-alertmanager-viewer-binding -n infra-obs
--user=fop-infrastructure-operator@example.com
--role=project-cortex-alertmanager-viewer
b. 平台管理员 (PA) 根管理员 - Project Cortex Alertmanager Viewer:
kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
pa-cortex-alertmanager-viewer-binding -n platform-obs
--user=fop-platform-admin@example.com
--role=project-cortex-alertmanager-viewer
c. 应用运维人员 (AO) 根管理员 - Project Cortex Alertmanager Viewer:项目:$AO_PROJECT AO 用户名:$AO_USER
kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
project-cortex-alertmanager-viewer-binding -n $AO_PROJECT
--user=$AO_USER
--role=project-cortex-alertmanager-viewer
创建角色绑定后,您可以使用登录用户名访问相应的 Alertmanager。
验证角色绑定
kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs
如需了解如何从 GDC 控制台设置角色绑定,请参阅 授予对资源的访问权限。
Cortex 端点
以下网址是用于访问提醒的 Cortex 端点:
https://GDC_URL/PROJECT_NAME/cortex/alertmanager/
替换以下内容:
- GDC_URL:您在 GDC 中的组织的网址。
- PROJECT_NAME:您的项目名称。
调用 API 端点
请按照以下步骤从 CLI 访问 Cortex API 端点并查询提醒:
- 确保您满足前提条件。
- 打开 CLI。
使用
curl工具调用 Cortex 端点网址,并使用标准 https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers 扩展网址以查询提醒。例如:curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
您可以在命令后在 CLI 中获取输出。API 响应格式为 JSON。