本页介绍了如何将 Prometheus 提醒规则迁移到基于 PromQL 条件的 Cloud Monitoring 提醒政策。如果您在 Google Cloud 外部的环境中使用 PromQL,迁移过程会很有用。通过迁移 将 Prometheus 提醒规则发送到 Cloud Monitoring 管理提醒政策。
有关基于 PromQL 的提醒政策的一般信息 条件,请参阅使用 PromQL 设置提醒政策。
您还可以导入 Grafana 信息中心。如需了解详情,请参阅 将 Grafana 信息中心导入 Cloud Monitoring。
迁移的工作原理
在 gcloud CLI 中,您可以迁移现有的提醒规则和接收器,以创建 Cloud Monitoring 提醒政策和通知渠道。gcloud CLI 可以执行以下类型的迁移:
如果您提供包含提醒规则的 Prometheus 配置文件,则 gcloud CLI 会创建基于 PromQL 条件的提醒政策。
您可以同时提供多个 Prometheus 配置文件,以创建基于 PromQL 条件的多个提醒政策。
如果您提供的 Prometheus Alertmanager 文件中至少包含一个接收器,则 gcloud CLI 会将每个接收器转换为 Monitoring 中的等效通知渠道。
如果您提供了 Prometheus Alertmanager 文件和 Prometheus 配置文件 则 gcloud CLI 会创建提醒政策和通知, 然后将每个新的通知渠道与新的 提醒政策。
如果您提供了包含提醒规则的多个配置文件,则 gcloud CLI 会将 Alertmanager 文件中的每个通知渠道分配给每项新的提醒政策。
如果您的 Prometheus 提醒规则引用自定义指标,则 gcloud CLI 需要等效的指标描述符才能创建提醒政策。
Prometheus 配置文件和 Prometheus Alertmanager 文件必须采用 YAML 或 JSON 格式,且为有效的 Prometheus 规则文件。
字段映射
gcloud CLI 会在 Prometheus 提醒规则和 Cloud Monitoring 提醒政策之间映射字段,如下所示:
Prometheus 提醒规则 | Cloud Monitoring 提醒政策 |
---|---|
alert |
conditionPrometheusQueryLanguage.alertRule |
expr |
conditionPrometheusQueryLanguage.query |
for |
conditionPrometheusQueryLanguage.duration |
labels |
conditionPrometheusQueryLanguage.labels |
annotations: "summary" |
documentation.subject |
annotations: "description" |
documentation.content |
迁移后的 Prometheus 提醒规则中的 Google Cloud 文档变量
Prometheus 使用提醒字段模板来配置变量 。迁移包含提醒字段模板的 Prometheus 提醒规则时,Cloud Monitoring 会将模板转换为 Cloud Monitoring 文档变量,如下所示:
Prometheus 提醒字段模板 | Cloud Monitoring 文档变量 |
---|---|
{{$value}} |
此变量是 |
{{humanize $value}} |
此变量是 |
{{$labels}} |
${metric_or_resource.labels} |
{{humanize $labels}} |
${metric_or_resource.labels} |
{{$labels.key}} |
在提醒政策文档配置中显示为
|
{{humanize $labels.<key>}} |
在提醒政策文档配置中显示为
|
从 Prometheus 迁移提醒规则和接收器
如需将 Prometheus 提醒规则迁移到基于 PromQL 条件的 Cloud Monitoring 提醒政策,请使用 gcloud alpha monitoring policies
migrate
命令。您还可以使用此命令将 Prometheus 接收器迁移到 Cloud Monitoring 通知渠道。
- 如需迁移提醒规则,您必须拥有包含提醒规则的 YAML 或 JSON Prometheus 规则文件。
如需迁移接收器,您必须使用包含接收器的 YAML 或 JSON Prometheus Alertmanager 文件。
Google Cloud 不支持迁移 Prometheus 记录规则。 要使用记录规则,我们建议您使用 自行部署的规则评估器。
通过 Prometheus 配置文件创建提醒政策
如需基于 Prometheus 配置文件创建提醒政策,请运行以下命令: 。您可以创建多项提醒政策,只需提供 多个文件路径:
gcloud alpha monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2
通过 Prometheus Alertmanager 配置文件创建通知渠道
通过 Prometheus Alertmanager 配置创建通知渠道 文件,请运行以下命令:
gcloud alpha monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
同时创建提醒政策和通知渠道
利用 Prometheus 配置文件创建提醒政策,并 通过 Prometheus Alertmanager 配置创建通知渠道 文件,请运行以下命令:
gcloud alpha monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2 \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
示例
您有一个 Prometheus 配置文件,其中包含一条 在 CPU 利用率保持超过 75% 一分钟时发送提醒。提醒规则的配置如下:
groups: - name: Utilization_Alerts interval: 30s rules: - alert: CPU_Utilization_Over_75 expr: compute_googleapis_com:instance_cpu_utilization > 75 for: 60s labels: severity: page annotations: subject: "Subject: ${metric.label.value}" description: "CPU utilization is over 75%"
您还有一个 Prometheus AlertManager 文件,其中包含 电子邮件、PagerDuty 和 webhook 接收器。
receivers: - name: 'team-emails' email_configs: - to: EMAIL_ADDRESS - name: 'team-pager' pagerduty_configs: - service_key: SERVICE_KEY - name: 'team-webhook' webhook_configs: - url: WEBHOOK_ADDRESS
如需创建提醒政策和通知渠道,请运行以下命令:
gcloud alpha monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_CONFIG_FILE \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_ALERTMANAGER_FILE
然后,gcloud CLI 会创建一个提醒政策,如以下示例所示:
{ "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID", "displayName": "Utilization_Alerts/CPU_Utilization_Over_75", "documentation": { "content": "CPU utilization is over 75%", "mimeType": "text/markdown", "subject": "Subject: ${metric.label.value}" }, "userLabels": {}, "conditions": [ { "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID/conditions/CONDITION_ID", "displayName": "CPU_Utilization_Over_75" "conditionPrometheusQueryLanguage": { "alertRule": "CPU_Utilization_Over_75", "duration": "60s", "evaluationInterval": "30s", "labels": { "severity": "page" }, "query": "compute_googleapis_com:instance_cpu_utilization > 75", "ruleGroup": "Utilization_Alerts" } } ], "alertStrategy": {}, "combiner": "OR", "enabled": true, "notificationChannels": [ "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_1", "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_2", "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_3" ] }
从 Managed Service for Prometheus 迁移提醒规则
Google Cloud 会配置 针对 Managed Service for Prometheus 的代管式规则评估 规则 ClusterRules 和 GlobalRules 自定义资源。
如需将这些资源迁移到基于 PromQL 条件的 Google Cloud 提醒政策,请执行以下操作:
将自定义资源的
groups
部分复制到 新的 Prometheus 规则文件。使用 gcloud CLI 迁移规则文件。
例如,您具有以下规则自定义资源:
apiVersion: monitoring.googleapis.com/v1 kind: Rules metadata: namespace: NAMESPACE_NAME name: example-rules spec: groups: - name: example interval: 30s rules: - alert: FewerThanTenInstancesUp expr: sum(up) < 10
通过从以前的规则中复制 groups
创建的 Prometheus 规则文件
如下所示:
groups: - name: example interval: 30s rules: - alert: FewerThanTenInstancesUp expr: sum(up) < 10
迁移多个 Rules 自定义资源
如果您要迁移多个 Rules、CustomRules 或 GlobalRules,我们建议为每个资源构建并迁移单独的规则文件。有关详情,请参阅 Prometheus 文档。
管理过滤条件和聚合表达式
规则和 ClusterRules 会自动过滤其 Prometheus 提醒 基于特定标签的表达式。如需在迁移后的提醒政策的查询中保留此行为,您必须先在 Prometheus 规则文件的过滤条件或汇总表达式中明确添加这些标签,然后才能迁移该文件。
例如,Managed Service for Prometheus 的托管规则评估器会按如下方式执行表达式 sum(up) < 10
:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
但是,如果提醒政策包含 PromQL 查询
sum(up) < 10
,则 Cloud Monitoring 会仅以
sum(up) < 10
。此查询会应用于指标范围中的每个 Google Cloud 项目、集群和命名空间。为避免出现这种行为,我们建议您在查询中按标签进行汇总,以确保 Cloud Monitoring 按预期执行您的查询。例如,从 Rules 自定义资源创建规则文件时,您可以将 sum(up) < 10
更改为以下表达式:
sum (up) by (project_id, cluster, namespace) < 10
上述表达式会为每个 Google Cloud 项目、集群和命名空间生成单独的时间序列,然后将每个时间序列与 <10
的提醒阈值进行比较。
下表显示了 alert-expression 过滤条件的评估顺序 :
规则资源类型 | 过滤标签 |
---|---|
规则 |
|
ClusterRule |
|
如需详细了解 Prometheus 表达式中的过滤行为,请参阅即时矢量选择器。