本文介绍如何在可观测监控 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。
操作步骤
在左侧导航栏单击告警规则模板。
在Prometheus告警规则模板页面左下角,单击批量导入模板。
在导入对话框,将PrometheusRule中的spec内容粘贴至当前输入框,然后单击导入告警规则模板。
示例:下图中图标①区域为当前示例PrometheusRule中的spec内容:
您需要将上述的spec内容(图标①)粘贴至导入对话框中,然后单击导入告警规则模板,如下图所示:
导入成功后,勾选导入的告警规则模板,在Prometheus告警规则模板页面左下角单击批量应用模板,即可批量应用模板到Prometheus告警规则。
方式二:开启可观测监控 Prometheus 版插件同步PrometheusRule告警规则
应用场景
若您使用了诸如GitOps等系统,且仍然希望可以通过Monitoring As Code的方式来配置告警规则。
对于已接入可观测监控 Prometheus 版的ACK集群(ACS不适用),且您希望通过PrometheusRule创建告警。
操作步骤
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群操作列下的应用管理。
在无状态页面,选择命名空间为arms-prom,找到名称列中以arms-prom开头的Deployment,例如arms-prom-ack-arms-prometheus(图标①),然后单击右侧操作列下的编辑(图标②)。
在编辑页面的生命周期区域,配置启动执行的参数,即在参数文本框中添加
--alert=true
(图标①),然后在编辑页面右上角,单击更新。可观测监控 Prometheus 版插件完成更新后,等待3~5分钟,即可在可观测监控 Prometheus 版控制台的告警规则列表页面查看到所有告警的状态显示为启动。
当您的集群开启了PrometheusRule自动同步之后,不建议在可观测监控 Prometheus 版控制台修改同步上来的告警规则。因为这样做往往会导致非预期的行为发生,比如修改名称或者删除告警规则这些操作都是无法在控制台实现的。除此之外当您在可观测监控 Prometheus 版控制台修改这些规则也会导致Monitoring As Code的机制遭到破坏(即被修改的规则无法同步到外部诸如GitOps等运维系统)。
后续操作
当您打开可观测监控 Prometheus 版插件的alert开关后,可观测监控 Prometheus 版插件会在arms-prom命名空间下创建一组内置的告警规则,如下图所示。关于这些自动创建的内置告警规则的具体说明,请参见Prometheus告警规则。
如果您不想使用这些告警规则,可以通过修改defaultAlert
参数关闭可观测监控 Prometheus 版插件内置的告警规则。具体操作步骤如下:
控制默认报警自动创建的参数为defaultAlert
,当其取值为true
时表示自动创建默认的报警;当其取值为false
时表示不自动创建默认的报警。
将可观测监控 Prometheus 版插件的
defaultAlert
设置为false
。登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群操作列下的应用管理。
无状态页面,选择命名空间为arms-prom,找到名称列中以arms-prom开头的Deployment,然后单击右侧操作列下的编辑。
在编辑页面的生命周期区域,配置启动执行的参数,即在参数文本框中添加
--defaultAlert=false
,然后在编辑页面右上角,单击更新。
说明可观测监控 Prometheus 版插件完成更新后,等待3~5分钟,可观测监控 Prometheus 版将不再为该集群创建默认告警。
可选:删除默认告警规则。
在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。
单击目标K8s集群的Prometheus实例名称。
在左侧导航栏,单击告警规则。在Prometheus告警规则页面,单击需要删除的告警规则操作列下的删除,并在弹出的对话框中单击确认。