PromQL
最后更新于:2022-04-02 03:00:01
[TOC]
> [官方手册](https://prometheus.io/docs/prometheus/latest/querying/basics/#instant-vector-selectors)
## PromQL
一条 Prometheus 数据由一个指标名称(metric)和 N 个标签(label,N >= 0)组成的
```
promhttp_metric_handler_requests_total{code="200",instance="192.168.0.107:9090",job="prometheus"} 106
```
- 这条数据的指标名称为 promhttp_metric_handler_requests_total,并且包含三个标签 code、instance 和 job,这条记录的值为 106
- 指标相当于表明,标签相当于字段,记录的值表示值,时间表示主键
### 条件
```
=:选择与提供的字符串完全相等的标签。
!=:选择不等于提供的字符串的标签。
=~:选择与提供的字符串进行正则表达式匹配的标签。
!~:选择不与提供的字符串正则表达式匹配的标签。
```
### 时间
```
ms - milliseconds
s - seconds
m - minutes
h - hours
d - days - assuming a day has always 24h
w - weeks - assuming a week has always 7d
y - years - assuming a year has always 365d
```
### 聚合函数
```
sum (计算尺寸总和)
min (选择最小尺寸)
max (选择最大尺寸)
avg (计算尺寸的平均值)
group (结果向量中的所有值均为1)
stddev (计算总体尺寸的标准偏差)
stdvar (计算总体标准方差)
count (向量中元素的数量)
count_values (计数具有相同值的元素数)
bottomk (按样本值最小的k个元素)
topk (按样本值最大k个元素)
```
## 实例
### 直接搜索
```
prometheus_http_requests_total
```
### 条件搜索
```
prometheus_http_requests_total{job="prometheus"}
http_requests_total{status!~"4.."}
```
### 查看某个时间
```
http_requests_total[5m]
```
### 求平均值
```
rate(http_requests_total[5m])
```
';