您的位置 首页 prometheus

prometheus  PromQL 介绍

prometheus  PromQL 介绍

PromQL初体验

1-查看某个特定的key

node_cpu_seconds_total

 

2-查看某个节点的指标

node_cpu_seconds_total{instance="10.0.0.205:9100"}

 

3-看某个节点的某刻CPU的某种状态

 

node_cpu_seconds_total{instance="10.0.0.41:9100",cpu="0",mode="idle"}

 

4 查询最近10s内某个节点CPU的某种状态时间

node_cpu_seconds_total{instance="10.0.0.41:9100",cpu="0",mode="idle"}[10s]

 

5 统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,非空闲状态使用的总时间

node_cpu_seconds_total{mode!="idle",cpu="0", instance="10.0.0.42:9100"}[1m]

6 统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,mode名称以字母"i"开头的所有CPU核心。

node_cpu_seconds_total{mode=~"i.*",cpu="0", instance="10.0.0.42:9100"}[1m]

7 统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,mode名称不是以字母"i"开头的所有CPU核心。

node_cpu_seconds_total{mode!~"i.*",cpu="0", instance="10.0.0.42:9100"}[1m]

 

第2部分

up

# 表示 Prometheus 能否抓取 target 的指标,用于 target 的健康检查
up{instance="10.0.0.205:9104",job="mysql-exporter"} 

这条语句会查出 Prometheus 抓取的所有 target 当前运行情况

也可以指定某个 label 来查询:

up{job="prometheus"}

这种写法被称为 Instant vector selectors,这里不仅可以使用 = 号,还可以使用 !==~!~,比如下面这样:

up{job!="prometheus"}
up{job=~"server|mysql"}
up{job=~"192\.168\.0\.107.+"}

=~ 是根据正则表达式来匹配,必须符合 RE2 的语法

和 Instant vector selectors 相应的,还有一种选择器,叫做 Range vector selectors,它可以查出一段时间内的所有数据:

http_requests_total[5m]

这条语句查出 5 分钟内所有抓取的 HTTP 请求数,注意它返回的数据类型是 Range vector,没办法在 Graph 上显示成曲线图,一般情况下,会用在 Counter 类型的指标上,并和 rate() 或 irate() 函数一起使用(注意 rate 和 irate 的区别)。

# 计算的是每秒的平均值,适用于变化很慢的 counter
# per-second average rate of increase, for slow-moving counters
rate(http_requests_total[5m])
 
# 计算的是每秒瞬时增加速率,适用于变化很快的 counter
# per-second instant rate of increase, for volatile and fast-moving counters
irate(http_requests_total[5m])

此外,PromQL 还支持 countsumminmaxtopk 等 聚合操作,还支持 rateabsceilfloor 等一堆的 内置函数更多的例子,还是上官网学习吧。如果感兴趣,我们还可以把 PromQL 和 SQL 做一个对比,会发现 PromQL 语法更简洁,查询性能也更高。

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章