- 双下划线的标签(例如address)是Prometheus系统默认标签,是不会显示在/metrics页面里面的;
- 系统默认标签在target页面中也是不显示的,需要鼠标放到Labels字段上才会显示。
- 常见的系统默认标签:
__address:当前target 实例的套接字地址:
__scheme:采集当前target 上指标数据时使用的协议(http或https)
__metrics_path:采集当前target 上的指标数据时使用URI路径,默认为/metrics
___param:传递的URL参数中第一个名称为的参数的值
__name:此标签是标识指标名称的预留标签,能够使用标签选择器对指标名称进行过滤

2.2 指标名称及标签使用注意事项
- 指标名称和标签的特定组合代表着一个时间序列;指标名称相同,但标签不同的组合分别代表着不同的时间序列;不同的指标名称自然更是代表着不同的时间序列
- PromQL支持基于定义的指标维度进行过滤和聚合;更改任何标签值,包括添加或删除标签,都会创建一个新的时间序列;应该尽可能地保持标签的稳定性,否则,则很可能创建新的时间序列,更甚者会生成一个动态的数据环境,并使得监控的数据源难以跟踪,从而导致建立在该指标之上的图形、告警及记录规则变得无效
2.3 样本数据格式
Prometheus 的每个数据样本由两部分组成
- 毫秒精度的时间戳
- float64格式的数据

三、PromQL 的数据类型
- 瞬时向量 (Instant vector): 特定或全部的时间序列集合上,具有相同时间戳的一组样本值
- 区间向量 (Range vector): 特定或全部的时间序列集合上,在指定的同一时间范围内的所有样本值
- 标量数据 (Scalar): 一个浮点型的数据值
- 字符串 (String): 一个字符串,支持使用单引号、双引号进行引用
3.1 时间序列选择器(Time series Selectors)
PromQL 的查询操作可能需要针对若干个时间序列上的样本数据进行,挑选出目标时间序列是构建表达式时最为关键的一步;
用户可使用向量选择器表达式来挑选出给定指标名称下的所有时间序列或部分时间序列的即时样本值或至过去某个时间范围内的样本值,前者称为瞬时向量选择器,后者称为区间向量选择器。
3.1.1 瞬时向量选择器(Instant Vector Selectors)
瞬时向量选择器可以返回0个、1个或多个时间序列上在给定时间戳(instant)上的各自的一个样本。
瞬时向量选择器由两部分组成:
- 指标名称:用于限定特定指标下的时间序列,即负责过滤指标;可选
- 标签选择器:用于过滤时间序列上的标签;定义在 {} 之中;可选
定义瞬时向量选择器时,以上两个部分应该至少给出一个;因此存在以下三种组合:
- 仅给定指标名称,或在标签名称上使用了空值的标签选择器:返回给定的指标下的所有时间序列各自的即时样本
例如,prometheus_http_requests_total 和 prometheus_http_requests_total{} 的功能相同,都是用于返回这个指标下各时间序列的即时样本(所有)- 仅给定标签选择器:返回所有符合给定的标签选择器的所有时间序列上的即时样本
例如,{code=“200”, job=“prometheus”} ,这样的时间序列可能会有着不同的指标名称- 指标名称和标签选择器的组合:返回给定的指标下的,且符合给定的标签过滤器的所有时间序列上的即时样本
例如,prometheus_http_requests_total{code=“200”, job=“prometheus”},用于返回这个指标 code 为 200, 并且 job 为 prometheus 的时间序列的即时样本



标签选择器用于定义标签过滤条件,目前支持如下4种匹配操作符:
操作符 | 过滤条件 |
= | 完全相等 |
!= | 不相等 |
=~ | 正则表达式匹配 |
!~ | 正则表达式不匹配 |


注意事项:
◆匹配到空标签值的标签选择器时,所有未定义该标签的时间序列同样符合条件
例如,prometheus_http_requests_total{handler= “”},则该指标名称上所有未使用该标签(handler)的时间序列也符合条件
◆正则表达式将执行完全锚定机制,它需要匹配指定的标签的整个值
◆向量选择器至少要包含一个指标名称,或者至少有一个不会匹配到空字符串的标签选择器
例如,{ job=“”}为非法的向量选择器
◆使用____name____ 做为标签名称,还能够对指标名称进行过滤
例如,{name=~“.*http_requests_total”}能够匹配所有以 http_requests_total 为后缀的所有指标


3.1.2 区间向量选择器(Range Vector Selectors)
区间向量选择器可以返回0个、1个或多个时间序列上在给定时间范值围内的各自的一组样本。
区间向量选择器的不同之处在于,需要通过在瞬时向量选择器表达式后面添加包含在 [] 里的时长来表达需在时间时序上返回的样本所处的时间范围。
时间范围:以当前时间为基准时间点,指向过去一个特定的时间长度;例如,[5m] 是指过去5分钟之内。
- 可用的时间单位有 ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)、w(周)和 y(年)
- 必须使用整数时间,且能够将多个不同级别的单位进行串联组合,以时间单位由大到小为顺序,例如 1h30m,但不能使用 1.5h

3.1.3 偏移向量选择器
前面介绍的选择器默认都是以当前时间为基准时间,偏移修饰器用来调整基准时间,使其往前偏移一段时间。偏移修饰器紧跟在选择器后面,使用关键字 offset 来指定要偏移的量。(查询的不是当前时间为起点的)
例如:
prometheus_http_requests_total offset 5m ,表示获取以 prometheus_http_requests_total 为指标名称的所有时间序列在过去 5 分钟之时的即时样本;
prometheus_http_requests_total[5m] offset 1d ,表示获取距此刻 1 天时间之前的 5 分钟之内的所有样本
















