ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Prometheus 精要(二)

2021-06-04 15:35:23  阅读:260  来源: 互联网

标签:__ name metric 指标 Prometheus 时间 序列 精要


时间序列

每一个指标包含若干个时间序列。

假设指标包含 N 个label,第 i 个 label 的值个数(种)为 C(i),那么这个指标最多包含 C(1) * C(2) * C(3) * ... * C(N) 个时间序列

可以直接通过 count(metric_name) 得到该指标实际包含的时间序列数

选择符

可以通过选择符筛选指标的某些时间序列。

筛选 label1 等于 value1 并且 label2 不等于 value2:

metric_name{label1 = "value1", label2 != "value2"}

正则匹配

metric_name{label1 =~ ".*value1.*", label2 !~ ".*value2.*"}

偏移

可以通过 offset 让时间序列在时间轴上发生偏移。返回和输入同等数量的时间序列。

metric_name offset 1d 

结果产生的每一个时间序列上的每一个时间点,对应其一天前的指标值

纵向聚合操作符

group

聚合指标包含的所有时间序列,返回常量1的时间序列(1个),看起来没什么实际用处,但在分组可以发挥作用

count

聚合指标包含的所有时间序列,返回新时间序列(1个):指标所有时间序列的(在每个时间点上)个数

sum

聚合指标包含的所有时间序列,返回新时间序列(1个):指标所有时间序列的指标值(在每个时间点上)的累加和

avg

聚合指标包含的所有时间序列,返回新时间序列(1个):指标所有时间序列的指标值(在每个时间点上)的平均值

avg(metric_name) 等价于 sum(metric_name)/count(metric_name)

max/min

聚合指标包含的所有时间序列,返回新时间序列(1个):指标所有时间序列的指标值(在每个时间点上)中最大/最小的那个值

quantile (P%)

聚合指标包含的所有时间序列,返回新时间序列(1个):指标P%的时间序列的指标值(在每个时间点上)都小于的那个值(百分位值)

topk/bottomk (K)

聚合指标包含的所有时间序列,返回新时间序列(K个):指标所有时间序列的指标值(在每个时间点上)中最大/最小的那K个值

分组

by 子句

OP = group/count/sum/avg/max/min...

OP by(label1, label2)(metric_name)

对于指标包含的每一个时间序列,以其 label1的值 + label2的值组合为 group key,根据 group key 将这些时间序列分为若干组,基于组进行组内聚合操作,产生N个新的时间序列(N=组数量)

without 子句

OP = group/count/sum/avg/max/min...

OP without(label1, label2)(metric_name)

对于指标包含的每一个时间序列,以除去 label1、label2 以外的 label 的值组合为 group key,根据 group key 将这些时间序列分为若干组,基于组进行组内聚合操作,产生N个新的时间序列(N=组数量)

__name__ 标签

可以理解为 prometheus 只包含一个"全局指标",普通指标只是这个"全局指标"的特殊标签 __name__ 的一个特殊值

up 等价于 {__name__="up"}

up{node="node-1"} 等价于 {__name__="up", node="node-1"}

可以很方便地用正则查询名字为某个前缀的所有指标

group by (__name__)({__name__=~"go_.*"})

横向聚合操作符

rate

对指标包含各个的时间序列,在各自的时间轴(在每个时间点上)向后看一个时间窗口,求单位时间(每秒)的增量。返回和输入同等数量的时间序列。

rate(metric_name[60s])

等价于

increase(metric_name[60s]) / 60

avg_over_time,min_over_time, max_over_time, sum_over_time, count_over_time, quantile_over_time ...

对指标包含各个的时间序列,在各自的时间轴(在每个时间点上)向后看一个时间窗口,求平均、最小值、最大值、和、值数量等。返回和输入同等数量的时间序列。

cheatsheet

查询当前系统时间序列的数量:

prometheus_tsdb_head_series

或

count({__name__!=""})

查询各个指标包含的时间序列数量,倒序排序:

sort_desc(count by(__name__)({__name__!=""}))

查询各个instance包含的时间序列数量,倒序排序:

sort_desc(count by(instance)({__name__!="", instance!=""}))

查询各个指标,平均在每个instance上,包含的时间序列数量,倒序排序:

sort_desc(avg by(__name__)(count by(__name__, instance)({__name__!="", instance!=""})))

标签:__,name,metric,指标,Prometheus,时间,序列,精要
来源: https://www.cnblogs.com/roy2220/p/14849771.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有