9.4. 管理警报规则
OpenShift Container Platform 监控附带一组默认的警报规则。作为集群管理员,您可以查看默认警报规则。
在 OpenShift Container Platform 4.10 中,您可以在用户定义的项目中创建、查看、编辑和删除警报规则。
警报规则注意事项
- 默认的警报规则专门用于 OpenShift Container Platform 集群。
- 有些警报规则特意使用相同的名称。它们发送关于同一事件但具有不同阈值和/或不同严重性的警报。
- 如果较低严重性警报在较高严重性警报触发的同时触发,禁止规则可防止在这种情况下发送通知。
9.4.1. 为用户定义的项目优化警报
要优化您自己的项目的警报,您可以在创建警报规则时考虑以下建议:
- 尽可能减少您为项目创建的警报规则数量。创建警报规则来针对会影响您的条件通知您。如果您为不会影响您的条件生成多个警报,则更难以注意到相关警报。
- 为症状而不是原因创建警报规则。创建警报规则来针对条件通知您,而无论根本原因是什么。然后可以调查原因。如果每个警报规则都只与特定原因相关,则需要更多警报规则。然后,可能会错过一些原因。
- 在编写警报规则前进行规划。确定对您很重要的症状以及一旦发生您想要采取什么操作。然后为每个症状构建警报规则。
- 提供明确的警报信息。在警报消息中说明症状和推荐操作。
- 在警报规则中包含严重性级别。警报的严重性取决于当报告的症状发生时您需要如何做出反应。例如,如果症状需要个人或关键响应团队立即关注,就应该触发关键警报。
优化警报路由。如果警报规则不查询默认的 OpenShift Container Platform 指标,则直接在
openshift-user-workload-monitoring
项目的 Prometheus 实例上部署该规则。这可减少警报规则的延迟,并尽可能降低监控组件的负载。警告用户定义的项目的默认 OpenShift Container Platform 指标提供有关 CPU 和内存用量、带宽统计和数据包速率的信息。如果您将规则直接路由到
openshift-user-workload-monitoring
项目中的 Prometheus 实例,则无法将这些指标包含在警报规则中。只有在您阅读了文档并对监控架构有了全面的了解后,才应使用警报规则优化。
其他资源
- 如需更多有关优化警报的指南,请参阅 Prometheus 警报文档
- 如需了解有关 OpenShift Container Platform 4.10 监控架构的详细信息,请参阅监控概述
9.4.2. 为用户定义的项目创建警报规则
您可以为用户定义的项目创建警报规则。这些警报规则将根据所选指标的值触发警报。
先决条件
- 您已为用户定义的项目启用了监控。
-
对于您要创建警报规则的项目,您已作为具有
monitoring-rules-edit
集群角色的用户登录。 -
已安装 OpenShift CLI(
oc
)。
流程
-
为警报规则创建 YAML 文件。在本例中,该文件名为
example-app-alerting-rule.yaml
。 向 YAML 文件添加警报规则配置。例如:
注意当创建警报规则时,如果在其他项目中存在具有相同名称的规则,则对其强制使用项目标签。
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: example-alert namespace: ns1 spec: groups: - name: example rules: - alert: VersionAlert expr: version{job="prometheus-example-app"} == 0
此配置会创建一个名为
example-alert
的警报规则。当示例服务公开的version
指标变为0
时,警报规则会触发警报。重要用户定义的警报规则可以包含其自身项目的指标和集群指标。您不能包含其他用户定义的项目的指标。
例如,用户定义的项目
ns1
的警报规则可以包含来自ns1
的指标和集群指标,如 CPU 和内存指标。但是,该规则无法包含来自ns2
的指标。另外,您无法为
openshift-*
核心 OpenShift Container Platform 项目创建警报规则。OpenShift Container Platform 监控默认为这些项目提供一组警报规则。将配置文件应用到集群:
$ oc apply -f example-app-alerting-rule.yaml
创建警报规则需要一些时间。
9.4.3. 减少不查询平台指标的警报规则的延迟
如果用户定义的项目的警报规则不查询默认集群指标,您可以在 openshift-user-workload-monitoring
项目中的 Prometheus 实例上直接部署该规则。这可绕过不需要的 Thanos Ruler,从而减少警报规则的延迟。这也有助于尽可能降低监控组件的总负载。
用户定义的项目的默认 OpenShift Container Platform 指标提供有关 CPU 和内存用量、带宽统计和数据包速率的信息。如果您将规则直接部署到 openshift-user-workload-monitoring
项目中的 Prometheus 实例,则无法将这些指标包含在警报规则中。只有在您阅读了文档并对监控架构有了全面的了解后,才应使用本节中所述的流程。
先决条件
- 您已为用户定义的项目启用了监控。
-
对于您要创建警报规则的项目,您已作为具有
monitoring-rules-edit
集群角色的用户登录。 -
已安装 OpenShift CLI(
oc
)。
流程
-
为警报规则创建 YAML 文件。在本例中,该文件名为
example-app-alerting-rule.yaml
。 向 YAML 文件添加警报规则配置,该文件中包含键为
openshift.io/prometheus-rule-evaluation-scope
且值为leaf- prometheus
的标签。例如:apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: example-alert namespace: ns1 labels: openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus spec: groups: - name: example rules: - alert: VersionAlert expr: version{job="prometheus-example-app"} == 0
如果存在该标签,则会在 openshift-user-workload-monitoring
项目中的 Prometheus 实例上部署警报规则。如果不存在该标签,则会将警报规则部署到 Thanos Ruler。
将配置文件应用到集群:
$ oc apply -f example-app-alerting-rule.yaml
创建警报规则需要一些时间。
- 如需了解有关 OpenShift Container Platform 4.10 监控架构的详细信息,请参阅监控概述
9.4.4. 访问用户定义的项目的警报规则
要列出用户定义的项目的警报规则,您必须已被分配该项目的 monitoring-rules-view
集群角色。
先决条件
- 您已为用户定义的项目启用了监控。
-
您以具有项目的
monitoring-rules-view
集群角色的用户身份登录。 -
已安装 OpenShift CLI(
oc
)。
流程
您可以列出
<project>
中的警报规则:$ oc -n <project> get prometheusrule
要列出警报规则的配置,请运行以下命令:
$ oc -n <project> get prometheusrule <rule> -o yaml
9.4.5. 在单个视图中列出所有项目的警报规则
作为集群管理员,您可以在单个视图中一起列出 OpenShift Container Platform 核心项目和用户定义的项目的警报规则。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
-
在 Administrator 视角中,进入到 Observe
Alerting Alerting Rules。 在 Filter 下拉菜单中选择 Platform 和 User 来源。
注意默认会选择 Platform 来源。
9.4.6. 为用户定义的项目删除警报规则
您可以为用户定义的项目删除警报规则。
先决条件
- 您已为用户定义的项目启用了监控。
-
对于您要创建警报规则的项目,您已作为具有
monitoring-rules-edit
集群角色的用户登录。 -
已安装 OpenShift CLI(
oc
)。
流程
要删除
<namespace>
中的规则<foo>
,请运行以下命令:$ oc -n <namespace> delete prometheusrule <foo>
其他资源
- 请参阅 Alertmanager 文档