You need to enable JavaScript to run this app.
导航
Prometheus 时序数据格式
最近更新时间:2024.12.25 10:51:52首次发布时间:2023.02.28 17:57:43

本文为您介绍 Prometheus 时序数据的格式。

时间序列

时间序列(time-series),简称为 时序,是 Prometheus 数据的基本组成。Prometheus 会将所有采集到的样本数据以时间序列的方式保存在内存数据库中,并且定时保存到硬盘上。

一个时间序列由 指标名称(metrics name) 和一组 标签集(labelset) 命名,并按照时间戳进行排列。

  • 每个时间序列都有一个名称。例如:
    • node_cpu_seconds_total - 节点 CPU 的使用时间
    • node_filesystem_free_bytes - 文件系统挂载点上的可用空间
    • kube_pod_status_ready - 集群中所有处于 Ready 状态的 Pod
  • 每个时间序列可以有多个 label="value" 标签。例如:
    • node_cpu_seconds_total{cluster="ccdxxx",host_ip="10.10.128.2"}
    • kube_pod_status_ready{namespace="default"}
  • 如果两个时间序列的名称或者标签的键值有任何一个不同,那么就被定义为不同的时间序列。例如下面的示例就为 3 个时间序列:
    • kube_pod_status_ready
    • kube_pod_status_ready{namespace="default"}
    • kube_pod_status_ready{namespace="volcano-metrics"}

时间序列是按照时间戳和值的序列顺序存放的,被称为:向量(vector),如下图所示。

Image

活跃时序

如果一个时间序列在指定时间(1 小时)内被抓取到新数据,那么它被称为活跃时间序列。

活跃时序数与工作区的写入能力有直接相关。如果您的最大活跃时序数超过了工作区的配额,会导致所采集的到数据被丢弃。因此,您需要根据实际情况,合理估算最大活跃时序数。

样本

在时间序列中,每一个点称为一个样本(sample),样本由以下三部分组成。

  • 指标(metric):包含指标名(metric name)和描述当前样本特征的标签(labelsets)。
  • 时间戳(timestamp):一个精确到毫秒的时间戳。
  • 样本值(value): 一个 float64 的浮点型数据,表示当前样本的值。

样本示例如下所示。

<--------------- metric ---------------------><---timestamp--><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355

指标

指标(metric)由 指标名 + 标签(label) 组成,一个指标可以包含多个 label。

<--metric name -->{<label name>=<label value>, ...}
prometheus_http_requests_total{status="200", method="GET"}
字段作用示例格式
指标名指标反映被监控样本的含义node_filesystem_size_bytes (节点文件系统大小)指标名称只能由 ASCII 字符、数字、下划线以及冒号组成。并且必须符合正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

标签

标签反映了当前样本的特征维度,通过这些维度,Prometheus 可以对样本数据进行过滤和汇聚

node_filesystem_size_bytes{device="/dev/sda1",fstype="ext4",mountpoint="/"} 中

  • device 设备,哪块磁盘
  • fstype 文件系统类型
  • mountpoint 挂载点

标签的名称只能由 ASCII 字符、数字以及下划线组成并满足正则表达式[a-zA-Z_][a-zA-Z0-9_]*

说明

__作为前缀的标签,是系统保留的关键字,只能在系统内部使用, 在 Kubernetes 自动发现中,可以看到大量的__meta_kubernetes 前缀的 label 。