相关文章:
Prometheus 所有采集的监控数据均以指标 (metric) 的形式保存在内置的时间序列数据库中:属于同一指标名称、同一标签集合、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为结果
一、指标名称和标签
-
每一条时间序列由指标名称 (Metric Name) 以及一组标签 (键值对) 唯一标识
-
指标名称 (Metric Name)
-
用于反映被监控样本的含义 (列如:
http_requests_total
表示当前系统接收到的 HTTP 请求总量) -
只能由 ASCII 字符、数字、下划线以及冒号组成,同时必须匹配正则表达式
[a-zA-Z_:][a-zA-Z0-9_:]*
- : (冒号) 用于表示用户自定义的记录规则,不能在 exporter 中或监控对象直接暴露的指标中使用冒号来定义指标名称
-
-
标签 (键值对)
-
只能由 ASCII 字符、数字、下划线以及冒号组成,同时必须匹配正则表达式
[a-zA-Z_:][a-zA-Z0-9_:]*
-
以
__
作为前缀的标签,是系统保留的关键字,只能在系统内部使用 -
标签值可以是包含任何 Unicode 编码的字符
-
-
-
-
通过使用标签,Prometheus 启用了强大的多维数据模型:具有相同指标名称的标签的任何给定组合,都会标识一个特定的度量维度实例 (例如:所有包含度量名称为
/api/tracks
的 HTTP 请求,标记上method=POST
的标签,就会形成具体的 HTTP 请求)-
查询语言允许基于这些维度进行过滤和聚合
-
改变任何度量指标上的标签值 (包括添加或删除指标),都会创建新的时间序列
-
二、样本
-
样本源自真实的时间序列数据,每个样本包括如下几点
-
一个 float64 的浮点型数据
-
一个精确到毫秒的时间戳
-
三、表示方法
-
通常使用给定的指标名称和标签集合来标识时间序列
- <metric name>{<label name>=<label value>, …}
-
例如,指标名称为
api_http_requests_total
,标签为method="POST
和handler="/messages"
的时间序列可以表示为- api_http_requests_total{method=“POST”, handler="/messages"}