很多公司都在使用 Prometheus 和 Nightingale,对于告警规则会有各自的沉淀,新发起一个开源项目,整理常用 Prometheus 告警规则,欢迎大家参与哈。
核心摘要
- 项目地址是 https://github.com/sretalk/prometheus-rules。
- 这个项目用于整理常用 Prometheus 告警规则,方便不同团队复用、审阅和持续补充。
- 规则按监控对象或产品目录组织,比如 MySQL、Linux、Kubernetes、Prometheus、VictoriaMetrics 等。
- 规则文件采用 Prometheus 规则格式,部分目录提供英文版和中文版。
- 如果使用新版 Nightingale,可以导入 Prometheus 格式的告警规则,减少手工迁移成本。
项目地址
项目地址:https://github.com/sretalk/prometheus-rules
项目简介
每个目录对应一类告警规则,比如 mysql 是 MySQL 相关的告警规则,linux 是 Linux 操作系统相关的告警规则,以此类推。格式全部采用 Prometheus 的规则格式。文件名是 en 后缀的是英文版,zh 后缀的是中文版。
可以把这个项目理解为一个 Prometheus 告警规则库:它不替代你自己的规则评审和阈值调优,但可以提供一批可参考、可复用、可共同维护的初始规则。
初步整理了一些告警规则,各个文件解释如下:
- automq/en.yaml: ActiveMQ 相关的告警规则(英文版)
- container/cadvisor-en.yaml: cadvisor 相关的告警规则(英文版)
- container/cadvisor-zh.yaml: cadvisor 相关的告警规则(中文版)
- kubernetes/kubernestes-en.yaml: kubernetes 相关的告警规则(英文版)
- linux/categraf-en.yaml: linux 相关的告警规则,采集器采用 categraf(英文版)
- linux/categraf-zh.yaml: linux 相关的告警规则,采集器采用 categraf(中文版)
- linux/node-exporter-en.yaml: linux 相关的告警规则,采集器采用 node-exporter(英文版)
- linux/node-exporter-zh.yaml: linux 相关的告警规则,采集器采用 node-exporter(中文版)
- mysql/categraf-en.yaml: mysql 相关的告警规则,采集器采用 categraf(英文版)
- mysql/mysqld-exporter-en.yaml: mysql 相关的告警规则,采集器采用 mysqld-exporter(英文版)
- nightingale/v8-en.yaml: nightingale 相关的告警规则,v8 版本(英文版)
- nightingale/v8-zh.yaml: nightingale 相关的告警规则,v8 版本(中文版)
- prometheus/en.yaml:prometheus 自身的告警规则(英文版)
- victoriametrics/alerts-health-en.yaml: victoriametrics 各个组件的基础告警规则(英文版)
- victoriametrics/alerts-vm-cluster-en.yaml: victoriametrics 集群版相关的告警规则(英文版)
- victoriametrics/alerts-vmsingle-en.yaml: victoriametrics 单机版相关的告警规则(英文版)
如何使用这些规则
如果你使用 Prometheus,可以直接参考这些 yaml 文件配置告警规则。如果你使用的是 Nightingale,需要使用新版本的 Nightingale;新版本 Nightingale 支持导入 Prometheus 格式的告警规则,把这些文件里的内容导入即可。
使用时建议注意三点:
- 先确认采集器和指标名是否一致,比如 Linux 规则区分 categraf 和 node-exporter。
- 再检查阈值是否适合自己的生产环境,不要把通用规则当成最终规则。
- 最后把规则放进团队自己的评审和发布流程里,避免告警噪声过大。
结论
Prometheus 告警规则沉淀不应该散落在各个公司的私有 yaml 中。把常见规则整理成开源项目,可以让不同团队共享经验,也方便 Nightingale 和 Prometheus 用户复用。如果你手里也有成熟规则,欢迎参与共建。
FAQ
Q1:这个项目里的规则可以直接用于生产吗?
A:可以作为初始参考,但上线前应结合自己的采集器、指标名、阈值和告警策略做确认。
Q2:为什么同一类规则会区分 categraf、node-exporter 或 mysqld-exporter?
A:不同采集器暴露的指标名、标签和语义可能不同,规则需要按采集器口径组织。
Q3:Nightingale 用户怎么使用这些规则?
A:使用支持导入 Prometheus 格式告警规则的新版本 Nightingale,把对应 yaml 文件导入即可。
enjoy :-)