一、查询持续性
到目前为止,我们只是在表达式浏览器中运行查询。虽然查看该查询的输出很方便,但结果仍然是临时存储在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浏览器访问该地址,可以查看到我们手动添加的rules:http://192.168.42.133:9090/rules -----
【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 里面运行表达式的值
【参考文档】 一、二 转自:https://www.cnblogs.com/cmxu/p/12270852.html 标签:rules,prometheus,查询,promethues,node1,root,yml From: https://www.cnblogs.com/gered/p/17284096.html