码农的世界DevOPSPrometheus

小团队从0搭建devOPS平台--Prometheus Prom

2019-08-28  本文已影响0人  jerry的技术与思维

Prometheus 的强大离不开功臣:PromQL (Prometheus Query Language) ,它是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。
在页面 http://xxxx:9090/graph 中,输入下面的查询语句,查看结果,例如:

node_network_up{device="em1"}

下面是PromQL 的简明教程

1.1 四种数据类型

1.2 操作符

Prometheus 查询语句中,支持常见的各种表达式操作符,例如

算术运算符:

支持的算术运算符有 +,-,*,/,%,^, 例如 http_requests_total * 2 表示将 http_requests_total 所有数据 double 一倍。

比较运算符:

支持的比较运算符有 ==,!=,>,<,>=,<=, 例如 http_requests_total > 100 表示 http_requests_total 结果中大于 100 的数据。

逻辑运算符:

支持的逻辑运算符有 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 结果中最大的数据。

注意,和四则运算类型,Prometheus 的运算符也有优先级,它们遵从(^)> (*, /, %) > (+, -) > (==, !=, <=, <, >=, >) > (and, unless) > (or) 的原则。

1.3 函数

根据每个点计算每秒的平均变化率.

根据最后两个数据点计算变化率.irate()适合于变化较快的数据,rate()适合变化较慢的数据.

更多的函数

1.4 示例

简单的指标查询 Simple time series selection

http_requests_total

子查询

rate(http_requests_total[5m])[30m:1m]

函数、操作符联合使用

假设http_requests_total 都有job 和instance标签,如果我们想要按job分组,累加所有实例的总数

sum(rate(http_requests_total[5m])) by (job)

查询CPU使用率:

100 - (avg by (job) (irate(node_cpu{mode="idle"}[5m])) * 100)

查询网卡即时速率

irate(node_network_receive_bytes[2m])

上一篇下一篇

猜你喜欢

热点阅读