Prometheus学习系列(三)之Prometheus 数据模型和metric类型

前言

本文来自Prometheus官网手册1Prometheus官网手册2 和 Prometheus简介java

说明

Prometheus从根本上存储的全部数据都是时间序列: 具备时间戳的数据流只属于单个度量指标和该度量指标下的多个标签维度。除了存储时间序列数据外,Prometheus还能够生成临时派生的时间序列做为查询的结果。

metrics和labels(度量指标名称和标签)

每个时间序列数据由metric度量指标名称和它的标签labels键值对集合惟一肯定。python

这个metric度量指标名称指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。 git

注意:冒号保留用于用户定义的录制规则。 它们不该被exporter或直接仪表使用。github

labbels开启了Prometheus的多维数据模型:对于相同的度量名称,经过不一样标签列表的结合, 会造成特定的度量维度实例。(例如:全部包含度量名称为/api/tracks的http请求,打上method=POST的标签,则造成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会造成新的时间序列图。golang

metric度量指标可能包含ASCII字母、数字、下划线和冒号,他必须配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*。正则表达式

label标签名称能够包含ASCII字母、数字和下划线。它们必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*api

带有_下划线的标签名称被保留内部使用,标签labels值包含任意的Unicode码。ruby

具体详见metrics和labels命名最佳实践函数

样本

样本造成了实际的时间序列数据列表。每一个采样值包括:spa

  • 一个64位的浮点值
  • 一个精确到毫秒级的时间戳

Notation(符号)

表示一个度量指标和一组键值对标签,须要使用如下符号:

[metric name]{[label name]=[label value], ...}

例如,度量指标名称是api_http_requests_total, 标签为method="POST", handler="/messages" 的示例以下所示:

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

这些命名和OpenTSDB使用方法是同样的。

度量指标类型

Prometheus客户端库提供了四核心的metrics类型,这四种类型目前仅在客户端库和wire协议中区分。Prometheus服务尚未充分利用这些类型,未来可能会发生改变。

Counter(计数器)

counter 是表示单个单调递增计数器的累积度量,其值只能在重启时增长或重置为零。 例如,您可使用计数器来表示所服务的请求数,已完成的任务或错误。

不要使用计数器来暴露可能减小的值。例如,不要使用计数器来处理当前正在运行的进程数,而是使用gauge。

客户端使用计数器的文档:

Gauge(测量器)

gauge是一个度量指标,它表示一个既能够递增, 又能够递减的值。

测量器主要测量相似于温度、当前内存使用量等,也能够统计当前服务运行随时增长或者减小的Goroutines数量

客户端使用计量器的文档

Histogram(柱状图)

直方图对观察结果进行采样(一般是请求持续时间或响应大小等),并将其计入可配置存储桶中。它还提供全部观察值的总和。基本度量标准名称为<basename>的直方图在scrape期间显示多个时间序列:

  • 暴露的观察桶的累积计数器:<basename>_bucket{le="<upper inclusive bound>"}
  • 全部观测值的总和:<basename>_sum
  • 已观察到的事件数:<basename>_count,和<basename>_bucket{le="+Inf"}相同

使用histogram_quantile函数, 计算直方图或者是直方图聚合计算的分位数阈值。 一个直方图计算Apdex值也是合适的, 当在buckets上操做时,记住直方图是累计的。详见直方图和总结

客户库的直方图使用文档:

Summary

相似histogram柱状图,summary是采样点分位图统计(一般是请求持续时间和响应大小等)。虽然它还提供观察的总数和全部观测值的总和,但它在滑动时间窗口上计算可配置的分位数。基本度量标准名称<basename>summary在scrape期间公开了多个时间序列:

  • 流φ-quantiles (0 ≤ φ ≤ 1), 显示为<basename>{quantiles="[φ]"}
  • <basename>_sum, 是指全部观察值的总和
  • <basename>_count, 是指已观察到的事件计数值

有关φ-分位数,Summary用法和histogram图差别的详细说明,详见histogram和summaries

有关summaries的客户端使用文档:

相关文章
相关标签/搜索