【功能与技巧】promethues通过记录规则持久化查询,存储rules表达式查询结果为采集指标
一、查询持续性
到目前为止,我们只是在表达式浏览器中运行查询。虽然查看该查询的输出很方便,但结果仍然是临时存储在Prometheus服务器上,我们可以通过以下三种方式使查询持久化:
* 记录规则:根据查询创建新指标
* 报警规则:从查询生成警报
* 可视化:使用Grafana等仪表板可视化查询
记录规则存储在Prometheus服务器上,位于Prometheus服务器加载的文件中。
规则是自动计算的,频率则由 prometheus.yml 配置文件的 global 块中的 evaluation_interval 参数控制。
规则文件在 Prometheus 配置文件的 rules_files 块中指定。
二、示例
基本案例
[root@node1 rules]# cat node1_rules.yml groups: - name: node1_rules rules: - record: instance:node_cpu:avg_rate1m #其实就是把下面表达式的值存储起来了,并且另存为指标: instance:node_cpu:avg_rate1m,后面可以直接用该指标查询结果
expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)*100 labels: metric_type: aggregation
在prometheus.yml文件的同一文件夹中创建一个 名为rules的子文件夹,用于保存我们的记录规则,并且为节点指标创建一个名为node1_rules.yml的文件。
[root@node1 opt]# cd /opt/prometheus/ [root@node1 prometheus]# mkdir rules [root@node1 prometheus]# cd rules/ [root@node1 rules]# vim node1_rules.yml [root@node1 rules]# cat node1_rules.yml groups: - name: node1_rules rules: - record: instance:node_cpu:avg_rate1m expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)*100 labels: metric_type: aggregation [root@node1 prometheus]# vim prometheus.yml # 修改prometheus.yml,添加配置 rule_files: - "rules/node1_rules.yml" [root@node1 prometheus]# docker container rm -f prometheus-server #由于之前是挂载的prometheus.yml,所以重新启动一下prometheus-server,把rules挂到容器里。 [root@node1 prometheus]# docker run --name prometheus-server -d -p 9090:9090 -v /opt/prometheus/:/etc/prometheus/ prom/prometheus

【3】案例:5分钟内出现过3次CPU超90%则报警
(3.1)需求描述
比如 1.1分触发一次,1.2分处于80%,1.3分 触发了2次CPU大于90%
(3.2)解决思路
1、使用 rules 文件中的 record,把每一次的(15S间隔)表达式值存储成另外一个指标,如 node_exporter:cpu:90
2、使用 count_over_time,统计5分钟内出现的次数

3、 使用 node_exporter:cpu:90 指标构建新的 rules 规则,表达式 count_over_time(node_exporter:cpu:90) >3 ,即可
其他相关参数
该参数 evaluation_interval 是去 rules 里面运行表达式的值
【参考文档】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-04-03 (4.40)sql server默认连接选项
2019-04-03 根据日期获取日期所在周星期一的日期
2019-04-03 (1.10)SQL优化——mysql 常见SQL优化
2019-04-03 (4.28)for xml path 在合并拆分上的作用演示
2019-04-03 (4.27)查看存储过程中的依赖关系
2019-04-03 链接服务器XXX的OLE DB提供程序“SQLNCLI”无法启动分布式事务“
2019-04-03 (4.26)sql server存储过程优化