Prometheus数据模型

半兽人 发表于: 2019-07-23   最后更新时间: 2020-10-22 09:59:06  
{{totalSubscript}} 订阅, 5,152 游览

Prometheus存储的所有数据都是时间序列: 具有时间戳的数据流只属于单个度量指标和该度量指标下的多个标签维度。除了存储时间序列数据外,Prometheus也可以利用查询表达式存储5分钟的返回结果中的时间序列数据。

metrics和labels

metrics (度量指标)

每一个时间序列数据由metric度量指标名称和它的标签labels键值对集合确定唯一。

metric指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。metric度量指标命名ASCII字母、数字、下划线和冒号,必须配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

labels (标签)

label开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些metric和label列表的基础上进行过滤和聚合。

标签label名称可以包含ASCII字母、数字和下划线。它们必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*。带有_下划线的标签名称被保留内部使用。

标签labels值包含任意的Unicode码。

具体详见metrics和labels命名最佳实践

有序的采样值

有序的采样值形成了实际的时间序列数据列表。每个采样值包括:

  • 一个64位的浮点值
  • 一个精确到毫秒级的时间戳

一个样本数据集是针对一个指定的时间序列在一定时间范围的数据收集。这个时间序列是由<metric_name>{<label_name>=<label_value>, ...}

指定度量名称和度量指标下的相关标签值,则确定了所关心的目标数据,随着时间推移形成一个个点,形成了图表上实时绘制动态变化的线条

Notation (符号)

表示一个度量指标一组键值对标签,需要使用以下符号:

[metric name]{[label name]=[label value], ...}

例如,度量指标名称是api_http_requests_total, 标签为method="POST", handler="/messages" 的示例如下所示:

api_http_requests_total{method="POST", handler="/messages"}

这些命名和OpenTSDB使用方法是一样的。

更新于 2020-10-22

查看Prometheus更多相关的文章或提一个关于Prometheus的问题,也可以与我们一起分享文章