11.5. 为用户定义的项目管理警报规则

OpenShift Container Platform 监控附带一组默认的警报规则。作为集群管理员,您可以查看默认警报规则。

在 OpenShift Container Platform 4.12 中,您可以在用户定义的项目中创建、查看、编辑和删除警报规则。

警报规则注意事项

  • 默认的警报规则专门用于 OpenShift Container Platform 集群。
  • 有些警报规则特意使用相同的名称。它们发送关于同一事件但具有不同阈值和/或不同严重性的警报。
  • 如果较低严重性警报在较高严重性警报触发的同时触发,禁止规则可防止在这种情况下发送通知。

11.5.1. 为用户定义的项目优化警报

要优化您自己的项目的警报,您可以在创建警报规则时考虑以下建议:

  • 尽可能减少您为项目创建的警报规则数量。创建警报规则来针对会影响您的条件通知您。如果您为不会影响您的条件生成多个警报,则更难以注意到相关警报。
  • 为症状而不是原因创建警报规则。创建警报规则来针对条件通知您,而无论根本原因是什么。然后可以调查原因。如果每个警报规则都只与特定原因相关,则需要更多警报规则。然后,可能会错过一些原因。
  • 在编写警报规则前进行规划。确定对您很重要的症状以及一旦发生您想要采取什么操作。然后为每个症状构建警报规则。
  • 提供明确的警报信息。在警报消息中说明症状和推荐操作。
  • 在警报规则中包含严重性级别。警报的严重性取决于当报告的症状发生时您需要如何做出反应。例如,如果症状需要个人或关键响应团队立即关注,就应该触发关键警报。

其他资源

  • 如需更多有关优化警报的指南,请参阅 Prometheus 警报文档
  • 如需了解有关 OpenShift Container Platform 4.12 监控架构的详细信息,请参阅监控概述

11.5.2. 关于为用户定义的项目创建警报规则

如果您为用户定义的项目创建警报规则,请在定义新规则时请考虑以下关键行为和重要限制:

  • 除了核心平台监控的默认指标外,用户定义的警报规则也可以包括由其自身项目公开的指标。您不能包含其他用户定义的项目的指标。

    例如,ns1 用户定义的项目的警报规则除核心平台指标(如 CPU 和内存指标)外还可以使用 ns1 项目公开的指标。但是,该规则无法包含来自不同 ns2 用户定义的项目的指标。

  • 要缩短延迟并最小化核心平台监控组件的负载,您可以将 openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus 标签添加到规则中。此标签只强制 openshift-user-workload-monitoring 项目中部署的 Prometheus 实例评估警报规则,并防止 Thanos Ruler 实例这样做。

    重要

    如果警报规则具有此标签,则您的警报规则只能使用用户定义的项目公开的这些指标。您基于默认平台指标创建的警报规则可能无法触发警报。

11.5.3. 为用户定义的项目创建警报规则

您可以为用户定义的项目创建警报规则。这些警报规则将根据所选指标的值触发警报。

注意
  • 当创建警报规则时,如果在其他项目中存在具有相同名称的规则,则对其强制使用项目标签。
  • 为了帮助用户了解警报的影响和原因,请确保您的警报规则包含警报消息和严重性值。

先决条件

  • 您已为用户定义的项目启用了监控。
  • 对于您要创建警报规则的项目,您已作为具有 monitoring-rules-edit 集群角色的用户登录。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 为警报规则创建 YAML 文件。在本例中,该文件名为 example-app-alerting-rule.yaml
  2. 向 YAML 文件添加警报规则配置。以下示例创建一个名为 example-alert 的新警报规则。当示例服务公开的 version 指标变为 0 时,警报规则会触发警报:

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-alert
      namespace: ns1
    spec:
      groups:
      - name: example
        rules:
        - alert: VersionAlert 1
          expr: version{job="prometheus-example-app"} == 0 2
          labels:
            severity: warning 3
          annotations:
            message: This is an example alert. 4
    1
    您要创建的警报规则的名称。
    2
    定义新规则的 PromQL 查询表达式。
    3
    分配给警报的严重性。
    4
    与警报关联的消息。
  3. 将配置文件应用到集群:

    $ oc apply -f example-app-alerting-rule.yaml
  • 如需了解有关 OpenShift Container Platform 4.12 监控架构的详细信息,请参阅监控概述

11.5.4. 访问用户定义的项目的警报规则

要列出用户定义的项目的警报规则,您必须已被分配该项目的 monitoring-rules-view 集群角色。

先决条件

  • 您已为用户定义的项目启用了监控。
  • 您以具有项目的 monitoring-rules-view 集群角色的用户身份登录。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 您可以列出 <project> 中的警报规则:

    $ oc -n <project> get prometheusrule
  2. 要列出警报规则的配置,请运行以下命令:

    $ oc -n <project> get prometheusrule <rule> -o yaml

11.5.5. 在单个视图中列出所有项目的警报规则

作为集群管理员,您可以在单个视图中一起列出 OpenShift Container Platform 核心项目和用户定义的项目的警报规则。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. Administrator 视角中,进入到 ObserveAlertingAlerting Rules
  2. Filter 下拉菜单中选择 PlatformUser 来源。

    注意

    默认会选择 Platform 来源。

11.5.6. 为用户定义的项目删除警报规则

您可以为用户定义的项目删除警报规则。

先决条件

  • 您已为用户定义的项目启用了监控。
  • 对于您要创建警报规则的项目,您已作为具有 monitoring-rules-edit 集群角色的用户登录。
  • 已安装 OpenShift CLI(oc)。

流程

  • 要删除 <namespace> 中的规则 <foo>,请运行以下命令:

    $ oc -n <namespace> delete prometheusrule <foo>

其他资源