PromQL(Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力
非常丰富,支持条件查询、操作符,并且内建了大量内置函数,供我们针对监控数据的各种维度进行查询.
瞬时向量与范围向量查询
如:
1.目标实例状态:
up
2.查询指标最新样本(称为瞬时向量):
node_cpu_seconds_total

回车,我们可以看到关于prometheus监控所有主机的数据,这就是瞬时向量

可以通过附加一组标签来进一步筛选这些时间序列:

3.查询指标近5分钟内样本(称为范围向量,时间单位 s,m,h,d,w,y):
查询192.168.1.112机器的cpu空闲率百分比
(会用到聚合操作符avg 和函数irate())

avg(irate(node_cpu_seconds_total{instance="192.168.1.112:9100",mode="idle"}[5m]))*100
avg:求平均值
irate():函数,计算指标在一定时间间隔内的变化速率
*100 : 换算百分比
求使用率再用100-(空闲率表达式)
利用这些表达式直接可以在grafana出图

常用操作符

常用promQL收集系统信息公式:
收集系统CPU监控信息
1 .CPU使用率
公式:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
2 . CPU负载
公式:
node_load1 ## 1分钟负载
node_load5 ##5分钟负载
node_load15 ##15分钟负载
收集系统内存监控信息
1 内存使用率
公式:(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes ))* 100
2 可用内存(单位:M)
公式:node_memory_MemAvailable_bytes / 1024 / 1024
收集系统磁盘监控信息
1 磁盘总大小(单位: G)
公式:node_filesystem_size_bytes {fstype=~"ext4|xfs"} / 1024 / 1024 / 1024
2 磁盘剩余大小(单位: G)
公式:node_filesystem_avail_bytes {fstype=~"ext4|xfs"} / 1024 / 1024 / 1024
3 磁盘使用率
公式:(1-(node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"})) * 100
收集系统网络监控信息
1. 网卡入网流量 (指定某一个网卡)
公式:irate(node_network_receive_bytes_total{device='ens32'}[5m])
2. 网卡出网流量(指定某一个网卡)
公式:irate(node_network_transmit_bytes_total{device='ens32'}[5m])
说明:收集系统各信息,都是通过node_exporter服务进行数据的收集,然后通过prometheus内置的PromQL语句进行组合查询,对于每一个公式,都可以在prometheus WEB界面测试查询。
网友评论