Skip to content

数据模型

Prometheus的存储实现上所有的监控样本都是以 time-series 的形式保存在 Prometheus 内置的TSDB(时序数据库)中,而 time-series 所对应的监控指标 (metric) 也是通过 labelset 进行唯一命名的。

样本数据

  • 指标(metric):metric name 和描述当前样本特征的 labelsets;
  • 时间戳(timestamp):一个精确到毫秒的时间戳;
  • 样本值(value): 一个float64的浮点型数据表示当前样本的值。
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
http_request_total{status="200", method="GET"}@1434417561287 => 94334

http_request_total{status="404", method="GET"}@1434417560938 => 38473
http_request_total{status="404", method="GET"}@1434417561287 => 38544

http_request_total{status="200", method="POST"}@1434417560938 => 4748
http_request_total{status="200", method="POST"}@1434417561287 => 4785

指标

指标的名称(metric name)可以反映被监控样本的含义(比如,http_request_total - 表示当前系统接收到的HTTP请求总量)。指标名称只能由ASCII字符、数字、下划线以及冒号组成并必须符合正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

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

Metrics类型

Metrics类型 · prometheus · 看云

Counter:只增不减的计数器

Counter类型的指标数据,只增不减(除非系统发生重置)。

常见的有node_cpu_seconds_total{cpu="x",mode="idle"},它表示的意思是序号为x的cpu从开机到当前的这段时间内,cpu处于空闲(idle)状态的时间总和。

image.png

Gauge:可增可减的仪表盘

Gauge类型的指标数据,可增可减,比如内存剩余量node_memory_MemAvailable

Histogram:直方图

Histogram一个典型的使用场景就是HTTP请求的响应时间。

bash
# HELP xxx_http_request_duration_seconds Histogram of latencies for HTTP requests.
# TYPE xxx_http_request_duration_seconds histogram
xxx_http_request_duration_seconds_bucket{verb="GET", le="0.1"} 10
xxx_http_request_duration_seconds_bucket{verb="GET", le="0.2"} 20
xxx_http_request_duration_seconds_bucket{verb="GET", le="0.3"} 30
xxx_http_request_duration_seconds_bucket{verb="GET", le="+Inf"} 30
xxx_http_request_duration_seconds_sum{verb="GET"} 4.5
xxx_http_request_duration_seconds_count{verb="GET"} 30

指标指定了请求数量、请求总耗时、各个时间区间的请求数量。

Summary:摘要

与 Histogram 类型类似,但它直接存储了分位数(quantile),相当于HTTP服务自已本身已经做了一次统计。

bash
# HELP xxx_http_request_duration_seconds Summary of latencies for HTTP requests.
# TYPE xxx_http_request_duration_seconds summary
xxx_http_request_duration_seconds{verb="GET", quantile="0.5"} 0.12
xxx_http_request_duration_seconds{verb="GET", quantile="0.9"} 0.22
xxx_http_request_duration_seconds{verb="GET", quantile="0.99"} 0.25
xxx_http_request_duration_seconds_sum{verb="GET"} 4.5
xxx_http_request_duration_seconds_count{verb="GET"} 30

参考链接

理解时间序列 · Prometheus