我们在前面已经使用了很多的promQL语句,但是大家有没有发现一个问题
就是每次我们想要查询一个东西,都要从头想这个语句要怎么写,可能有人存有笔记还好
如果没有就很麻烦了,这说明我们需要一个记录常用语句的方案,而prometheus中就提供的方法就是"记录规则"
案例
#首先我们要创建记录规则目录
mkdir /etc/prometheus/rules && cd $_
#添加规则文件
cat > node_rules.yml <<EOF
groups:
- name: node_rules
interval: 10s #局部评估间隔,优先级高于全局
rules:
- record: instance:node_cpu:avg_irate5m #别名,自定义 (最好能说明白是做什么的)
#相当于给下面的查询语句起了个别名方便查询
expr: avg(irate(node_cpu_seconds_total{instance=~".*:9100"}[5m])) by(instance)* 100
#需要持久化的promQL查询语句
EOF
#上面规则文件中的语句是用于查询cpu使用率的,前面的文章有案例
vi /etc/prometheus/prometheus.yml
#添加
3 evaluation_interval: 15s #全局评估周期时间,优先级低于局部配置
27 rule_files:
28 - "rules/node_rules.yml" #指定规则文件的路径
#检查语法
promtool check config /etc/prometheus/prometheus.yml
#重载配置
curl -X POST http://192.168.1.20:9090/-/reload
如下我们可以看到添加的规则,并且可以根据别名快速调用写好的promQL语句查询
可能显示的有点慢,需要等一下ˋ( ° ▽、° )
小知识
记录规则在规则组中定义,这里的规则组叫做node_rules
规则组名称在服务器中必须是"唯一的" 规则组内的规则以固定间隔顺序执行
默认情况下,这是通过全局evaluation_interval来控制的,但是你可以使用interval子句在规则组中覆盖(子文件优先)
并且这个记录规则可以被当作参数调用 如下