prometheus 语法初探

概述

  • Prometheus是一套使用go语言进行编写的监控工具,专注于基础监控,默认仅保留15天的监控数据,15天的监控数据,已经足够运维人员去排查和分析运维故障。
  • Prometheus有专门的PQL语言,可以对采集上来的指标进行多维度、函数分析,具有高度的指标定制化能力。
  • 本文将同大家一起学习Prometheus的PQL语法,验证并记录下过程

PQL重要概念

即时向量
  • 一个时间点某指标的值,如
node_cpu_seconds_total{
   
   mode="idle"}

在这里插入图片描述

区间向量
  • 指的是在某段时间内metric的取值,每个时间点都包含一系列的值
node_cpu_seconds_total{
   
   mode="idle"}[5m]

在这里插入图片描述

指标类型
Gauge
  • 度量值,这个值是有变化的,如CPU使用率,有高有低
Counter
  • 累计值,从程序开始,只增不减,如开机运行时长
标签
  • 一个指标,可以包括多个标签(label),用来指示这个指标的具体表示信息,起到对一个指标的修饰作用,标签可使用正则表达式进行匹配。
  • 如node_cpu_seconds_total 指标,直接查询该指标,会打印出该指标的全部标签数据。
    -![在这里插入图片描述](https://img-blog.csdnimg.cn/20210109190203697.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9qaW5yYW4=,size_16,color_FFFFFF,t_70
  • 拿关系型数据比较,可以这么类似比喻
    node_cpu_seconds_total为表,cpu,instance,job,mode,value为其字段,表数据总为最新的数据,数据量总数等于各个字段的枚举值相乘。
  • 当我们给这个metric指标做了标签过滤时,相当于执行了w
### Grafana 中 Prometheus 查询语法规则 #### 1. 基本概念 Prometheus 的查询语言称为 PromQL (Prometheus Query Language),用于从时间序列数据库中提取和聚合数据。PromQL 支持多种操作符和函数来处理这些时间序列数据[^1]。 #### 2. 时间序列表达式 时间序列由度量名称(metric name)、标签集(label set)以及样本值组成。可以使用如下语法指定特定的时间序列: ```plaintext <metric_name>{<label_matchers>} ``` 例如,要获取名为 `http_requests_total` 的所有时间序列,可写成: ```promql http_requests_total{} ``` 如果只想匹配带有某些标签的时间序列,则可以在大括号内定义相应的键值对: ```promql http_requests_total{job="api-server", instance=~"web.*"} ``` 此处的正则表达式允许更灵活的选择实例名。 #### 3. 即时向量与范围向量 即时向量表示单个时间点上的多个时间序列;而范围向量则是指一段时间内的观测结果集合。可以通过 `[duration]` 来创建范围向量,其中 duration 是持续时间段,比如 `5m` 表示过去五分钟的数据窗口。 ```promql rate(http_requests_total[5m]) ``` 上述命令计算了每秒平均请求速率,在最近五分种范围内。 #### 4. 聚合运算符 Prometheus 提供了几种内置的聚合运算符来进行跨维度汇总统计,如 sum()、avg()、min() 和 max() 等。当应用这些运算符时,默认会对所有未被显式保留下来的标签执行降维操作。 ```promql sum by (code) (rate(http_responses_total{handler="/metrics"}[5m])) ``` 此例子展示了按 HTTP 状态码分类后的响应次数变化趋势图。 #### 5. 高级特性 除了基本的功能外,PromQL 还支持复杂的算术运算、逻辑判断甚至子查询等功能。对于更加精细的需求,还可以利用额外提供的辅助函数进一步增强查询能力。 ```promql increase(node_cpu_seconds_total{mode!="idle"}[1h]) / increase(node_cpu_seconds_total[1h]) * 100 ``` 这段代码用来衡量 CPU 利用率百分比,排除掉空闲状态下的占用情况。 --- 为了更好地理解并掌握这些规则,建议读者尝试在实际环境中构建一些简单的图表面板,并逐步增加复杂度直到能够熟练运用各种技巧为止。同时也可以参考官方文档获得最新最全的信息和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值