操作 | 说明 |
---|---|
sum | 求和 |
min | 最小值 |
max | 最大值 |
avg | 平均值 |
stddev | 标准差 |
stdvar | 方差 |
count | 统计元素个数 |
count_values | 等于某值的元素个数 |
bottomk | 最小的 k 个元素 |
topk | 最大的 k 个元素 |
quantile | 分位数 |
sum(system_disk_bytes_total{ ident="10.10.239.52"})/1024/1024/1024
有图有真相
max(system_disk_bytes_total{ ident="10.10.239.52"})
有图有真相
count_values("value",system_mem_total)
有图有真相
bottomk(5,system_mem_used)
有图有真相
ceil(v instant-vector)
ceil(system_mem_used_percent{ident="10.10.239.31"})
floor(v instant-vector)
floor(system_mem_used_percent{ident="10.10.239.31"})
round(v instant-vector, to_nearest=1 scalar)
round(system_mem_used_percent{ident="10.10.239.31"})
说明:在范围内的值被取出,在范围外取范围边界值。
clamp(v instant-vector, min scalar, max scalar)
clamp(system_mem_used_percent{ident="10.10.239.31"},4,10)
完整示例:
- 原有值
system_mem_used_percent{ident="10.10.239.31"}
- 1
结果输出
system_mem_used_percent{ident="10.10.239.31"} 5.226927972811279
- 1
- 如果值在给出范围内
clamp(system_mem_used_percent{ident="10.10.239.31"},4,10)
- 1
结果输出
{ident="10.10.239.31"} 5.232399234516268
- 1
- 如果值在给出范围外
clamp(system_mem_used_percent{ident="10.10.239.31"},7,10)
- 1
结果输出
{ident="10.10.239.31"} 7
- 1
值小于限定值则显示原有值,值大于限定值则显示限定值。
clamp_max(v instant-vector, max scalar)
clamp_max(system_mem_used_percent{ident="10.10.239.31"},7)
值大于限定值则显示原有值,值小于限定值则显示限定值。
clamp_min(v instant-vector, max scalar)
clamp_min(system_mem_used_percent{ident="10.10.239.31"},7)
changes(v range-vector)
changes(system_mem_used_percent{ident="10.10.239.31"}[5m])
连续样本数值减少,视为复位
resets(v range-vector)
resets(system_mem_used_percent{ident="10.10.239.31"}[5m])
计算区间第一个和最后一个值的差
delta(v range-vector)
delta(system_mem_used_percent{ident="10.10.239.31"}[10m])
结果显示
{ident="10.10.239.31"} -0.004406665458601161
计算区间第一个和最后一个值的差
idelta(v range-vector)
idelta(system_mem_used_percent{ident="10.10.239.31"}[10m])
结果显示
{ident="10.10.239.31"} -0.0011583301807851498
说明:计算范围向量中时间序列的平均每秒增长率
rate(v range-vector)
rate(system_mem_used_percent{ident="10.10.239.31"}[10m])
结果显示
{ident="10.10.239.31"} 0.1416991173036296
计算时间范围内的增量 = 时间范围内秒数 * rate()
increase(v range-vector)
increase(system_mem_used_percent{ident="10.10.239.31"}[10m])
结果显示
{ident="10.10.239.31"} 80.79502430097307
通过时间范围的最后两个点来计算每秒瞬时增长率。
irate(v range-vector)
irate(system_mem_used_percent{ident="10.10.239.31"}[10m])
值如果是时间戳,则返回值是几点
year(v=vector(v instant-vector)
year(mongodb_instance_local_time)
结果显示
今天是2022/10/24 10:24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 2022
{app="mongodb", chart="mongodb-7.8.10", ……} 2022
{app="mongodb", chart="mongodb-7.8.10", ……} 2022
值如果是时间戳,则返回值是几点
month(v=vector(v instant-vector)
month(mongodb_instance_local_time)
结果显示
今天是2022/10/24 10:24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 2
{app="mongodb", chart="mongodb-7.8.10", ……} 2
{app="mongodb", chart="mongodb-7.8.10", ……} 2
值如果是时间戳,则返回值是这个月的第几天
day_of_month(v instant-vector)
day_of_month(mongodb_instance_local_time)
结果显示
今天是2022/10/24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 24
{app="mongodb", chart="mongodb-7.8.10", ……} 24
{app="mongodb", chart="mongodb-7.8.10", ……} 24
值如果是时间戳,则返回值是几点
hour(v instant-vector)
hour(mongodb_instance_local_time)
结果显示
今天是2022/10/24 10:24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 10
{app="mongodb", chart="mongodb-7.8.10", ……} 10
{app="mongodb", chart="mongodb-7.8.10", ……} 10
值如果是时间戳,则返回值是几点
minute(v instant-vector)
minute(mongodb_instance_local_time)
结果显示
今天是2022/10/24 10:24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 24
{app="mongodb", chart="mongodb-7.8.10", ……} 24
{app="mongodb", chart="mongodb-7.8.10", ……} 24
值如果是时间戳,则返回值是星期几
day_of_week(v instant-vector)
day_of_week(mongodb_instance_local_time)
结果显示
今天是2022/10/24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 1
{app="mongodb", chart="mongodb-7.8.10", ……} 1
{app="mongodb", chart="mongodb-7.8.10", ……} 1
值如果是时间戳,则返回值是这个月一共几天
day_in_month(v=vector(v instant-vector)
day_in_month(mongodb_instance_local_time)
结果显示
今天是2022/10/24 星期一
{app="mongodb", chart="mongodb-7.8.10", ……} 31
{app="mongodb", chart="mongodb-7.8.10", ……} 31
{app="mongodb", chart="mongodb-7.8.10", ……} 31
返回每个样本的时间戳
timestamp(v instant-vector)
timestamp(system_mem_used)
用于建立一个新标签,值链接多个原有标签
label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)
label_join(probe_success{group="http", instance="10.1.xxx.68:80", job="http_hq_nginx", project="xxxxx"},"new_label","://","group","instance")
结果显示
probe_success{group="http", instance="10.1.xxx.68:80", job="http_hq_nginx", new_label="http://10.1.xxx.68:80", project="xxxxx"} 1
用于建立一个新标签,并付给新值,并支持正则匹配原有值
label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)
label_replace(probe_success{instance="10.1.30.68:80"},"port","$1","instance",".*:(.*)")
结果显示
可见新增加了port标签,并从instance标签处匹配到了 80端口。
probe_success{group="http", instance="10.1.xxx.68:80", job="http_hq_nginx", port="80", project="HQ-AllInOne-PC"} 1
predict_linear(v range-vector, t scalar)
predict_linear(system_mem_used_percent{ident="10.10.xxx.31"}[2h],3600)
通过2小时内的数据,推算3600s后的数据
absent(v instant-vector)
- 返回空的情况
job
的值没有http_hq_nginx
- 搜索到的结果不是2
- 返回值为1
- 其它情况
absent(probe_success{job="http_hq_nginx" } == 2 )
- 搜索到的结果:
probe_success{job="http_hq_nginx" }
- 1
结果显示
所有端口都是存活的,因此返回值都是
1
probe_success{group="http", instance="10.1.xxx.68:80", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1 probe_success{group="http", instance="10.1.xxx.68:8080", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1 probe_success{group="http", instance="10.1.xxx.69:80", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1 probe_success{group="http", instance="10.1.xxx.69:8080", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1 probe_success{group="http", instance="10.1.xxx.73:80", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1 probe_success{group="http", instance="10.1.xxx.73:8080", job="http_hq_nginx", project="HQ-AllInOne-PC"} 1
- 1
- 2
- 3
- 4
- 5
- 6
- 返回空:标签的值对上了,查询的结果也对
absent(probe_success{job="http_hq_nginx" } == 1 )
- 1
- 返回1:标签值不对
absent(probe_success{job="liubei" } == 1 )
- 1
结果
{} 1
- 1
- 返回1:查询结果对不上
absent(probe_success{job="http_hq_nginx" } == 2 )
- 1
结果
{} 1
- 1
absent_over_time(v range-vector)
absent_over_time(probe_success{job="hello"}[1m])
结果显示
job标签没有 “hello”这个值,因此返回
1
{job="hello"} 1
scalar(v instant-vector)
scalar(system_mem_used_percent{ident="10.10.239.31"})
- 返回不是一条记录,因此会返回
NaN
scalar(system_mem_used)
- 1
返回结果
scalar NaN
- 1
- 只搜到了一条数据,返回该值
scalar(system_mem_used_percent{ident="10.10.239.31"})
- 1
返回结果
scalar 5.230846579167555
- 1
将标量作为没有标签的向量返回
vector(s scalar)
vector(scalar(system_mem_used_percent{ident="10.10.239.31"}))
结果显示
{} 5.231388776273454
可以回翻一下刚才的
scalar
的结果,是带scalar
的
sgn(v instant-vector)
说明:
- 如果 v 为正,则为 1
- 如果 v 为负,则为 -1
- 如果 v 等于 0,则为 0。
sgn(system_mem_used_percent{ident="10.10.239.31"})
{ident="10.10.239.31"} 1
sort(v instant-vector)
sort(system_mem_used_percent)
sort_desc(v instant-vector)
sort_desc(system_mem_used_percent)
avg_over_time(range-vector)
min_over_time(range-vector)
max_over_time(range-vector)
sum_over_time(range-vector)
统计单位时间内取到指标个数
count_over_time(range-vector)
count_over_time(system_mem_used_percent{ident="10.10.239.31"}[3m])
结果显示
{ident="10.10.239.31"} 9
验证:
system_mem_used_percent{ident="10.10.239.31"}[3m]
取到的数据确实是 9 条
说明:区间向量内每个度量指标的样本数据值分位数,φ-quantile (0 ≤ φ ≤ 1)
quantile_over_time(scalar, range-vector)
说明:区间向量内每个度量指标的总体标准偏差
stddev_over_time(range-vector)
说明:区间向量内每个度量指标的总体标准方差
stdvar_over_time(range-vector)
abs(v instant-vector)
sqrt(v instant-vector)
deriv(v range-vector)
exp(v instant-vector)
ln|log2|log10(v instant-vector)