介绍
PromSql是 Prometheus的数据库查询语法,可以方便的查找监控指标的值并且做一些数学运算帮助我们能快速和方便的去统计数据以及设置告警阈值
基础用法
<metric name>
例如:
http_requests_total
通过label可进行筛选,过滤指定标签的数据
<metric name>{<label name>=<label value>, ...}
例如:
http_requests_total{job="prometheus",group="canary"}
运算
(1)支持的算术运算符有 +,-,*,/,%,^
例如:
http_requests_total * 2
将 http_requests_total 所有数据翻2倍。
(2)支持的比较运算符有 ==,!=,>,<,>=,<=,=~,!~
例如:
http_requests_total > 100
筛选http_requests_total 结果中大于 100 的数据。
http_requests_total{job=~".*server"}
筛选标签job以server结尾的数据
(3)支持的逻辑运算符有 and,or,unless,
例如:
http_requests_total == 5 or http_requests_total == 2
筛选http_requests_total 结果中等于 5 或者 2 的数据。
常用函数
支持的聚合运算符有 sum,min,max,avg,stddev,stdvar,count,count_values,bottomk,topk,quantile,, 例如 max(http_requests_total) 表示 http_requests_total 结果中最大的数据
sum() 函数:求所有value的值和
sum(http_requests_total)
avg()函数: 求平均值
avg(http_requests_total)
max() 函数:找最大值
max(http_requests_total)
min() 函数:找最小值
min(http_requests_total)
rate()函数: 统计速率
rate(http_requests_total[5m])
by (标签名)
avg(http_requests_total) by (instance)
delta 函数:计算一个范围向量v的第一个元素和最后一个元素之间的差值
delta(http_requests_total[5m])