Prometheus学习笔记(7)PromQL玩法入门

1、什么是PromQL???

PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在Prometheus的日常应用当中,包括对数据查询、可视化、告警处理当中。前面的笔记当中有说道我们通过exporter采集到的数据是以时间序列(time-series)的方式保存在内存数据库中,并定时保存到硬盘。time-series是一个按照时间戳和值的顺序存放,可以说是一种矢量值。

什么是矢量值???就是已知x轴和y轴,得出x和y交叉点的那个值就是矢量值,而这里的time-series就是这样的一个值,每条time-series通过指标名称(metrics name)和一组标签(labels)命名,比如前面的node_memory_MemFree_bytes{instance="node02",job="node02"},"node_memory_MemFree_bytes"为指标名称,{ }内的为标签集合。

metrics通常固定的格式为:

<metric name>{<label name>=<label value>, ...}

指标名称只能由ASCII字符、数字、下划线以及冒号组成并必须符合正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

其中以__作为前缀的标签,是系统保留的关键字,只能在系统内部使用。标签的值则可以包含任何Unicode编码的字符。在Prometheus的底层实现中指标名称实际上是以name= 的形式保存在数据库中的,因此以下两种方式均表示的同一条time-series:

node_cpu_seconds_total{mode='idle'}   和

{__name__="node_cpu_seconds_total",mode='idle'}

是一样的!!!!

前面也说明了metrics的类型:

  • counter:递增计算器 --> 用于递增类的指标,如请求的总速率http_request_total,一般用_total作后缀。

  • gauge:可增可减仪表盘 --> 用于统计内存,硬盘的使用率,如node_memory_MemFree_bytes。

  • hitogram/summary:统计和分析样本分布情况 --> 通俗地说统计一段时间内的量化指标,比如cpu的平均使用率,页面响应等等。

1.1、如何查询???

  • (1)监控指标名称查询

通过监控指标名称查询,也就是我们上面metrics的名称,而通过指标名称查询又可以分为完全匹配和正则匹配查询。

完全匹配查询,即 metrics_name{xxx=ooo 或 metrics_name{xxx!=ooo} ,如:

# 如下查询了cpu的空闲和非空闲时的使用时间
node_cpu_seconds_total{mode='idle'}    或   node_cpu_seconds_total{mode!='idle'} 

正则匹配查询,即 metrics_name{xxx=~"ooo"} 或 metrics_name{xxx=~"ooo",zzz!=777}

pushgateway_http_requests_total{instance=~"pushgateway",method='get'}  
                                                                        或
pushgateway_http_requests_total{instance=~"pushgateway",method!='get'}
  • (2)范围查询

  • (3)时间位移查询

  • (4)聚合查询

1.2、合法的PromQL表达式怎么写???

猜你喜欢

转载自www.cnblogs.com/linuxk/p/12054401.html