Prometheus

55479
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

数据模型


Prometheus 基本上会把所有数据存储为时间序列:属于同一指标和相同标签维度的时间戳打标值(timestamped values)流。除了存储的时间序列外,Prometheus 可能会生成查询结果作为临时衍生时间序列。

指标名称和标签

每个时间序列通过其指标名称和可选的关键值对(即 labels,称为标签)进行唯一标识。

指标名称

  • 指定系统测量的一般特性(例如http_requests_total - 接收到的 HTTP 请求总数)。
  • 指标名称可包含 ASCII 字母、数字、下划线和冒号。它必须匹配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

注意:冒号保留用于用户定义的记录规则。它们不应被 Exporter 或直接注入(direct instrumentation)使用。

指标标签

  • 使 Prometheus 的维度数据模型能够识别具有相同指标名称的任意给定的标签组合。它标识了该指标的特定维度(例如:所有使用方法 POST/api/tracks handler 的 HTTP 请求)。使用查询语言可以根据这些维度进行过滤和聚合。
  • 任何标签值的变化,包括添加或移除标签,都将创建一个新的时间序列。
  • 标签可包含 ASCII 字母、数字以及下划线。它们必须匹配正则表达式 [a-zA-Z_][a-zA-Z0-9_]*
  • 开始以__(两个 ”_“)的标签名用于 Prometheus 内部使用。
  • 标签名可以包含任何 Unicode 字符。
  • 具有空标签值的标签被视为与不存在的标签等效。

有关命名指标和标签的最佳实践,请参阅此处

样本

指标样本构成了实际的时间序列数据。每个样本包括:

  • 一个 float64 值
  • 毫秒精度的时间戳

注意:从 Prometheus v2.40 版本开始,我们实验性支持原生 Histogram(native histogram)。现在,样本值可以以完整的 Histogram 的形式出现,而不仅仅是简单的 float64。

符号表示

给定一个指标名称和一组标签,时间序列经常使用以下符号表示法进行标识:

<指标名称>{<标签名称>=<标签值>,...}

例如,一个带有指标名称api_http_requests_total和标签method="POST"handler="/messages"的时间序列可以这样书写:

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

OpenTSDB 也使用同样的符号表示法。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32