You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python导出/获取Prometheus中的告警规则

Prometheus告警规则批量导出自动化方案

下面是3种可直接落地的实现方式,按落地成本从低到高排序,都支持全量拉取数百条规则、自动逐条拆分保存为txt文件:

方案1:调用Prometheus原生API实现(优先推荐,零额外部署)

Prometheus本身内置了规则查询的HTTP接口,不需要装任何额外服务,几行shell脚本就能搞定全流程,适合绝大多数部署场景。

  • 核心接口为/api/v1/rules,会返回Prometheus当前已加载的所有规则组、规则的完整配置,包含告警表达式、持续时长、标签、注解全量字段
  • 直接用curl拉取接口数据,搭配jq做字段过滤和格式化,就能直接输出成可读性强的txt文件,示例脚本:
# 替换为实际环境的Prometheus访问地址
PROM_URL="http://127.0.0.1:9090"
# 拉取全量告警规则,逐条格式化后写入txt
curl -s -k "${PROM_URL}/api/v1/rules" | jq -r '
.data.groups[] as $group |
$group.rules[] |
select(.type == "alerting") |
"====================================",
"告警名称: " + .name,
"所属规则组: " + $group.name,
"所属配置文件: " + $group.file,
"触发表达式: " + .query,
"触发等待时长: " + (.duration // "未设置"),
"关联标签: " + ((.labels // {}) | to_entries | map("\(.key)=\(.value)") | join("; ")),
"告警注解: " + ((.annotations // {}) | to_entries | map("\(.key)=\(.value)") | join("; ")),
""
' > ./prometheus_all_alert_rules.txt
  • 脚本执行完直接生成目标txt文件,200条规则的拉取处理过程一般不超过3秒,可以直接加到crontab定时任务里做定期自动备份,完全不需要人工干预。如果Prometheus开启了Basic Auth或者Token鉴权,在curl命令里加上-u user:pass或者-H "Authorization: Bearer xxxx"参数即可。

方案2:从本地规则配置文件直接解析导出

如果你的Prometheus是通过本地静态YAML文件加载规则的(也就是启动参数里rule_files指定本地目录的部署模式),且你有服务器的文件访问权限,可以直接扫描规则文件解析导出,不需要依赖Prometheus服务处于运行状态。

  • 实现逻辑是用yq(YAML格式处理工具,和jq用法一致)批量扫描所有规则YAML文件,提取告警类规则的字段拼接成目标格式写入txt,示例命令:
# 替换为实际的规则文件存放目录
RULE_PATH="/opt/prometheus/rules"
find ${RULE_PATH} -name "*.yaml" -o -name "*.yml" | xargs -I {} yq e '
.groups[] as $group |
$group.rules[] |
select(.alert != null) |
"====================================",
"告警名称: " + .alert,
"所属规则组: " + $group.name,
"触发表达式: " + .expr,
"触发等待时长: " + (.for // "未设置"),
"关联标签: " + ((.labels // {}) | to_entries | map("\(.key)=\(.value)") | join("; ")),
"告警注解: " + ((.annotations // {}) | to_entries | map("\(.key)=\(.value)") | join("; ")),
""
' {} > ./prometheus_all_alert_rules.txt
  • 这个方案导出的规则顺序和本地配置文件的书写顺序完全一致,适合需要和人工维护的配置做逐行核对的场景。

方案3:基于Promtool工具导出+规则校验

如果导出规则的同时需要做规则合法性检查,可以用Prometheus官方自带的promtool命令行工具实现。

  • 操作方式是先通过API拉取全量规则,或者直接指向本地规则目录,用promtool输出规则的结构化检查结果,过滤掉记录规则只保留告警规则后重定向到txt即可。
  • 额外优势是导出过程会自动识别语法错误、重复告警、不合理的阈值配置,导出的同时完成规则巡检,适合对规则稳定性要求高的生产环境使用。

落地提示:

  • 如果需要保留原始配置做二次处理,可以先把API返回的JSON原始结果单独存一份,后续按需调整txt的输出格式即可
  • 规则里如果存在特殊字符、正则表达式,jq和yq默认会做正确转义,不会出现导出内容截断、乱码的问题

内容的提问来源于stack exchange,提问作者Oscar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:57:12