Prometheus 教程

Prometheus 数据模型

从根本上说,Prometheus 将所有数据都存储为时间序列:属于同一指标和同一组标签维度的时间戳值流。除了存储的时间序列外,Prometheus 还可以根据查询结果生成临时派生时间序列。

指标名称和标签

每个时间序列都由其指标名称和称为标签的可选键值对唯一标识。

指标名称:

  • 指定要测量的系统一般特征(例如,http_requests_total - 接收到的 HTTP 请求总数)。

  • 指标名称可包含 ASCII 字母、数字、下划线和冒号。它必须匹配 [a-zA-Z_:][a-zA-Z0-9_:]* 正则表达式。

注意:冒号是为用户定义的记录规则保留的。它们不应被输出程序或直接仪器使用。

指标标签:

  • 使 Prometheus 的维度数据模型能够识别同一指标名称的任何给定标签组合。它可识别该指标的特定维度实例(例如:使用 POST 方法向 /api/tracks 处理程序发送的所有 HTTP 请求)。查询语言允许根据这些维度进行过滤和聚合。

  • 更改任何标签的值,包括添加或删除标签,都将创建一个新的时间序列。

  • 标签可包含 ASCII 字母、数字和下划线。它们必须与 [a-zA-Z_][a-zA-Z0-9_]* 正则表达式匹配。

  • 以 __(两个"_")开头的标签名称保留供内部使用。

  • 标签值可包含任何 Unicode 字符。

  • 标签值为空的标签等同于不存在的标签。

例如:

prometheus_http_requests_total{code="200", handler="/metrics", instance="localhost:9090", job="prometheus"}  808

其中:

  • prometheus_http_requests_total  为指标名称

  • code、handler、instance、job 为指标的标签

  • 808  为指标值

样本(Samples)

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

  • 一个 float64 值

  • 毫秒精度的时间戳

注意:从 Prometheus v2.40 版开始,实验性地支持本地直方图。采样值不再是一个简单的 float64,而是一个完整的直方图。

符号(格式)

给定一个指标名称和一组标签后,时间序列经常使用这种符号来识别:

<metric name>{<label name>=<label value>, ...}

其中:

  • <metric name>  为指标名称

  • <label name>  为指标标签名称

  • <label value>  为指标标签值

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

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

这与 OpenTSDB 使用的符号相同。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号