蓝盟IT外包,Prometheus监视运输实战PromQL语法

发布者:上海IT外包来源:http://www.lanmon.net点击数:1475

蓝盟IT小贴士,来喽!
PromQL是内置于Prometheus的数据查询DSL语言,支持丰富的时间序列查询、聚合和逻辑运算功能。 现在,PromQL被广泛应用于Prometheus的日常使用中,如数据查询、可视化、警告处理等,可以说掌握PromQL是熟练使用Prometheus的必要条件。
在前一篇文章中,我们就Prometheus的导入方法进行了说明。 本文将使用内置于Prometheus中的表达式浏览器演示如何使用PromQL语言。 打开浏览器访问http://localhost:9090/graph时,如下图所示。
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
基本查询
标记指针名称以执行查询,例如,Prometheus基本查询的公式格式小于metric  name,大于{label=value},并显示请求Prometheus更新接口的次数
Prometheus  _ http  _ requests  _ total处理程序='//reload  '。
1.
在表达式浏览器中运行时,将显示三个数据,并在选项卡中查看与代码编号200、代码编号405和代码编号500相对应的请求数。 水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
查询表达式还可以支持使用与指针名称(如http_request_total  )或空字符串(如{code='200'} )不匹配的标记过滤器进行的查询。
Prometheus  _ http  _ requests  _总体#是合法的
Prometheus  _ http  _ requests  _ total  { } #是合法的
{处理程序='/API/v1 /查询' } #合法
1.
2.
3.
PromQL支持=和! 可以使用label=value查询这些标签满足表达式的时间序列,但相反,使用label=value排除满足条件的时间序列。 以上述查询为例,如果只想关注未正常响应的请求,可以使用以下表达式Prometheus  _ http  _ requests  _ total  {处理程序='//重新加载',代码!='200'} '
1.
在这种情况下,查询结果将排除code=200的时间序列,并返回其他类型的数据。
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
除了完全匹配的查询外,PromQL还支持将正则表达式用作匹配条件。 标记格式为label=~regx。 其中~是符号,regx是正规内容。
例如,在正则表达式的模糊匹配中,上述接口查询也可以使用以下表达式获得相同的效果
Prometheus  _ http  _ requests  _ total  {处理程序=~'.*重新加载' }
1.
如果需要同时查询多个接口的时间序列,请使用以下正则表达式
Prometheus  _ http  _ requests  _ total  {处理程序=~' /图形| /规则| /公制' }
1.
时间范围查询
在上述基本查询情况中,如果使用小于公制名称的{label=value}方法进行查询,则返回的结果中只包含该时间序列的最新值。 这样的结果类型称为“瞬时向量”。 除了瞬时矢量外,PromQL还支持返回某个时间范围内的一组时间序列数据。 这称为“范围向量”。
范围向量表达式需要定义时间选择的范围。 时间范围包含在“”编号中。 例如,要查询5分钟以内的样本数据,可以使用以下公式
Prometheus  _ http  _ requests  _ total  {处理程序='//reload  ',代码=' 200 ' } [ 5m  ]
1.
在Prometheus资源管理器中,可以看到返回的数据包含了5分钟以内的所有采样结果
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,除了使用m作为分钟外,PromQL的时间范围选择器还支持其他时间单位。

米分
h  -时间
d日
w周
y  -年
在时间序列查询中,除了以当前时间为基准以外,还可以使用offset进行时间偏移操作。 以1小时前的时间点为基准,调查瞬时矢量和5分钟以内的范围矢量:
Prometheus  _ http  _ requests  _ total  {处理程序='//reload  ',代码=' 200 ' }偏移1h
Prometheus  _ http  _ requests  _ total  {处理程序='//reload  ',代码=' 200 ' } [ 5m  ]偏移1h
1.
2.
操作员
在PromQL查询中,还可以使用表达式运算符进行更复杂的结果查询。 常见的操作包括:
算术运算符
数据运算符使用加法、减法、乘法、除法等方法计算样本值并返回计算结果。 例如,通过process_virtual_memory_bytes取得的存储器值的单位为byte,在想变换为GB单位的情况下,可以用下式进行处理
进程虚拟内存字节/(1024 * 1024 * 1024 )
1.
PromQL支持的所有数学运算符如下:
(加法)
- ((减法() ) () ) ) ) )。
* * (乘法) ) )
(除法)。
(求余() ) ) ) )。
^ (幂运算)。
比较运算符
比较运算符支持用户根据时间序列样本的值过滤时间序列。 例如,如果只查询Prometheus请求量大于000的接口数据,则可以使用以下比较表达式进行过滤:
Prometheus  _ http  _ requests  _ total  {代码=' 200 ' }大于1000
1.
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
比较表达式也可以与bool修饰符组合。 添加bool时,表达式不会筛选数据,而是根据比较结果返回1(true  )或0 )0(false  )。 例如:
Prometheus  _ http  _ requests  _ total  {代码=' 200 ' }比布尔1000大1.
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
Prometheus支持的比较运算符包括:
====等于)
!=(不等于)
大于()大于)
小于(小于)
=大于()以上) ) ) ) )。
小于=(((等于以下) ) () ) ) ) ) ) ) )。
逻辑运算符
逻辑运算符支持的操作有and、or和unless三种。 其中,and是并集,用于匹配表达式的相同结果。 在以下示例中,此表达式匹配大于100小于1000的区间的时间序列样本
prometheus_http_requests_total小于100或prometheus_http_requests_total大于或等于100
1.
其中,式1显示所有小于1,000的样本,而式2显示所有100个以上的样本,在并集匹配后,在两者之间显示相同的数据,即小于1,000的100个区间的样本。
水印,大小_ 14,文本_ QDU  XQ1RP5 y2 a5 a6i,颜色_ FFFFF,t_100,g_se,x_10,y_10,阴影_ 20,
unless与and正好相反,匹配的结果是两者中的相同样本被排除,只显示其中对方不包含部分的集合。 or的一致范围最大,除了与式1的所有数据一致外,还与式2的与其不同的样本一致。
注: Prometheus运算符之间存在优先级。 其中,从高到低依次大于(^ )、/,% )、大于- )==,=、小于=、小于、大于=、大于(大于) ) and、unless  )或)必须注意优先级关系,以避免产生错误的结果。
聚合操作
PromQL语言提供了许多内置的聚合算子,用于聚合瞬时矢量的样本以形成新的序列。 目前支持的聚合运算符包括:
合计)
min  (最小值) )
最大值)
avg  (平均值) )
stddev  (标准偏差) )
是stdvar  (标准方差)计数
count  _ values  (计数值) ) ) ) ) ) ) )。
bottomk  (后n个序列) )。
topk  (前n个序列) )。
质量(分数)
聚合运算符有非常多的用途。 例如,可以使用sum总结返回结果,得到合计值。 例如,要计算所有接口的请求总数,请使用以下公式
求和(质量_ http  _请求总数)
1.
使用max匹配采样值最大的时间序列
最大值(Prometheus  _ http  _ requests  _ total  )
1.
利用avg求出所有样品的平均值
avg  (质量_ http  _请求总数)
1.
使用topk可以显示前n个匹配的时间序列数据
topk(5,Prometheus  _ http  _请求总数)
1.
聚合操作还可以将without或by添加到表达式中。 without用于从计算示例中删除枚举的标签,而by相反,结果向量只剩下枚举的标签,其余的标签被删除。
sum  (Prometheus  _ http  _ requests  _ total  ) without  (代码、处理程序、作业) ) ) ) )。
sum  (Prometheus  _ http  _ requests  _ total  ) by  (实例) ) ) ) ) ) ) ) ) ) )0)
1.
2.
内置函数
Prometheus中内置了许多函数,灵活应用这些函数可以简化查询和数据的格式设置。 Promehtues的函数包含各种各样的功能。 本文选取其中常用的几个函数进行说明。
ceil函数
ceil函数将返回值向上舍入为整数。 示例:
ceil  (avg  (Prometheus  _ http  _ requests  _总代码=' 200 ' )
1.
floor函数
floor函数与ceil相反,四舍五入到如下例所示。
floor  (avg  (Prometheus  _ http  _ requests  _总代码=' 200 ' )
1.
rate函数
rate函数是使用频率最高、最重要的函数之一。 rate用于计算某个时间段内每秒的平均增长数,并在该时间段内的所有数据点进行统计。 rate函数通常作用于Counter型指标,用于了解增量情况。例如:获取http_request_total在2分钟内添加的请求数的平均值
rate  (Prometheus  _ http  _ requests  _ total、处理程序='/rules  ' ) [ 1m  ]
1.
irate函数
irate提供比rate函数更高的灵敏度。 irate函数通过根据时间区间最后两个样本数据计算区间矢量的增长速度,避免范围内的平均值降低峰值。
例:这个函数的使用方法和rate相同
irate  (Prometheus  _ http  _ requests  _ total  )处理程序='/rules  ' [ 1m  ]
1.
其他内置函数
除了这些函数之外,PromQL还提供了许多涵盖日常所需功能的函数,如用于标记替换的label_replace函数和用于对Histogram指标的小数位数进行统计的histogram_quantile函数详情请参阅官方文件“”3359prometheeeer
文/上海蓝盟  IT外包专家
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部