通过PrometheusRule创建告警规则

本文介绍如何在可观测监控 Prometheus 版中使用PrometheusRule创建告警规则。

背景信息

PrometheusRule是Prometheus Operator中用于控制告警的CRD(Custom Resource Definition)。 一个PrometheusRule定义了一组Prometheus的Alerting Rules或者Recording Rules。在一个安装了Prometheus Operator的Kubernetes中,使用者可以通过创建PrometheusRule来创建告警。作为Monitoring as Code的一种实现方式,非常适合用于搭建GitOps类的研发运维体系。

可观测监控 Prometheus 版中,您也可以使用PrometheusRule来创建告警规则。可观测监控 Prometheus 版不仅提供了交互更好的可视化页面来管理Prometheus实例的告警,也兼容了Prometheus Operator中通过PrometheusRule创建告警的使用方式。

使用说明

可观测监控 Prometheus 版支持以下两种方式使用PrometheusRule来创建和控制告警规则。

  • 方式一:通过将PrometheusRule导入为告警规则模板可以可视化完成告警的批量创建和更新,这种方式适合习惯使用白屏化操作的用户,您可以在阿里云控制台高效的完成大批量告警规则的管理。具体操作,请参见方式一:将PrometheusRule导入到告警规则模板

  • 方式二:通过打开可观测监控 Prometheus 版插件自动同步PrometheusRule规则,可以保持开源的告警配置使用方式。这种方式适合习惯开源使用方式的用户,方便打造Monitoring As Code的运维体系。具体操作,请参见方式二:开启插件同步PrometheusRule告警规则

说明

默认情况下,通过可观测监控 Prometheus 版不会读取创建在Kubernetes中的PrometheusRule规则,因此您可以根据业务需求使用任意一种方式通过PrometheusRule规则来创建和控制告警。

方式一:将PrometheusRule导入到告警规则模板

优势

可观测监控 Prometheus 版提供了Prometheus告警规则模板功能来解决多区域多集群的告警配置效率问题。一次配置Prometheus告警规则模板即可实现在全球范围内多次应用到不同的集群,极大降低了告警的配置工作量,提高了配置效率。

可观测监控 Prometheus 版提供了将PrometheusRule批量导入为告警模板的能力,通过一次性将告警规则导入到阿里云控制台,避免多集群重复多次创建PrometheusRule。

操作步骤

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击告警规则模板

  3. Prometheus告警规则模板页面左下角,单击批量导入模板

  4. 导入对话框,将PrometheusRule中的spec内容粘贴至当前输入框,然后单击导入告警规则模板

    示例:下图中图标①区域为当前示例PrometheusRule中的spec内容:qt

    您需要将上述的spec内容(图标①)粘贴至导入对话框中,然后单击导入告警规则模板,如下图所示:ar

    导入成功后,勾选导入的告警规则模板,在Prometheus告警规则模板页面左下角单击批量应用模板,即可批量应用模板到Prometheus告警规则。

方式二:开启可观测监控 Prometheus 版插件同步PrometheusRule告警规则

应用场景

  • 若您使用了诸如GitOps等系统,且仍然希望可以通过Monitoring As Code的方式来配置告警规则。

  • 对于已接入可观测监控 Prometheus 版的ACK集群(ACS不适用),且您希望通过PrometheusRule创建告警。

操作步骤

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群操作列下的应用管理

  3. 无状态页面,选择命名空间为arms-prom,找到名称列中以arms-prom开头的Deployment,例如arms-prom-ack-arms-prometheus(图标①),然后单击右侧操作列下的编辑(图标②)。

    qu

  4. 编辑页面的生命周期区域,配置启动执行参数,即在参数文本框中添加--alert=true(图标①),然后在编辑页面右上角,单击更新

    dr

    可观测监控 Prometheus 版插件完成更新后,等待3~5分钟,即可在可观测监控 Prometheus 版控制台的告警规则列表页面查看到所有告警的状态显示为启动

重要

当您的集群开启了PrometheusRule自动同步之后,不建议在可观测监控 Prometheus 版控制台修改同步上来的告警规则。因为这样做往往会导致非预期的行为发生,比如修改名称或者删除告警规则这些操作都是无法在控制台实现的。除此之外当您在可观测监控 Prometheus 版控制台修改这些规则也会导致Monitoring As Code的机制遭到破坏(即被修改的规则无法同步到外部诸如GitOps等运维系统)。

后续操作

当您打开可观测监控 Prometheus 版插件的alert开关后,可观测监控 Prometheus 版插件会在arms-prom命名空间下创建一组内置的告警规则,如下图所示。关于这些自动创建的内置告警规则的具体说明,请参见Prometheus告警规则image

如果您不想使用这些告警规则,可以通过修改defaultAlert参数关闭可观测监控 Prometheus 版插件内置的告警规则。具体操作步骤如下:

说明

控制默认报警自动创建的参数为defaultAlert,当其取值为true时表示自动创建默认的报警;当其取值为false时表示不自动创建默认的报警。

  1. 可观测监控 Prometheus 版插件的defaultAlert设置为false

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群操作列下的应用管理

    3. 无状态页面,选择命名空间为arms-prom,找到名称列中以arms-prom开头的Deployment,然后单击右侧操作列下的编辑

    4. 编辑页面的生命周期区域,配置启动执行的参数,即在参数文本框中添加--defaultAlert=false,然后在编辑页面右上角,单击更新

    说明

    可观测监控 Prometheus 版插件完成更新后,等待3~5分钟,可观测监控 Prometheus 版将不再为该集群创建默认告警。

  2. 可选:删除默认告警规则。

    1. 登录Prometheus控制台

    2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

    3. 单击目标K8s集群的Prometheus实例名称。

    4. 在左侧导航栏,单击告警规则。在Prometheus告警规则页面,单击需要删除的告警规则操作列下的删除,并在弹出的对话框中单击确认