1. 时序数据

时序数据是基于时间的一系列的数据。它是在一段时间内进行重复测量而获得的观测值的集合。将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴。下图为黄石公园历年温度数据,这就是一个典型的时序数据:
时序数据.png
服务器、应用程序的性能指标,网络流量等每时每刻不断变化的值,这些都是时序数据。

1.1 Prometheus 数据模型

Prometheus 所采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中, 每一条时间序列由指标名称(Metrics Name)以及一组标签(键值对)唯一标识组成,格式为“{
prometheus_http_requests_total{code="200", handler="/metrics", instance="localhost:9090", job="prometheus"}

  • 指标名称:用于描述系统上监控样本的含义,
    • 上面的序列中的指标名称为prometheus_http_requests_total表示当前系统接收到的 prometheus 发送的 HTTP 请求总量;
    • 支持使用字母、数字、下划线和冒号,且必须能匹配 RE2 规范的正则表达式;
  • 标签:键值型数据,附加在指标名称之上,从而让指标能够支持多纬度特征。通过使用不同标签列表的集合,会形成不同的度量维度实例。

    • 例如http_requests_total{method=GET}http_requests_total{method=POST}就代表着两个不同的时间序列,改变任何指标上的任何标签值(添加或删除指标),都会创建一个新的时间序列,代表的含义也会发生变化;
    • 标签名称可使用字母、数字和下划线,且必须能匹配 RE2 规范的正则表达式;
    • 以“ ”为前缀的名称为Prometheus系统预留使用;

      1.2 样本数据格式

      Prometheus 的每个数据样本都由三部分组成
  • Metrcie_name 和 Lables 组成的时间序列

  • 毫秒精度的时间戳 Timestamp
  • float64 格式的数据 值 Sample Value

prometheus样本数据格式.png

2 PromQL 数据类型

PromQL 表达式支持 4 种数据类型:

  • 即时向量(Instant Vector):特定或全部的时间序列集合上,具有相同时间戳的一组样本值称为即时向量;
  • 范围向量(Range Vector):特定或全部的时间序列集合上,在指定的同一时间范围内的所有样本值;
  • 标量(Scalar):一个浮点型的数据值;
  • 字符串(String):支持使用单引号、双引号或反引号进行引用,但反引号中不会对转义字符进行转义;