二、prometheus概念

概念

数据模型

普罗米修斯基本上将所有数据存储为时间序列:具有相同度量和相同标注维度集的带时间戳的值流。除了存储的时间序列外,Prometheus还可以生成临时派生的时间序列作为查询的结果。

指标名称和标签

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

度量名称指定被度量的系统的一般特性(例如:http_requeststotal - 接收到的HTTP请求的总数)。它可能包含ASCII字母和数字,以及下划线和冒号。它必须匹配正则表达式[a-zA-Z:][a-zA-Z0-9_:]*。

注意:冒号是为用户定义的记录规则保留的。它们不应该被 exporters 或直接工具使用。

标签支持Prometheus的维度数据模型:相同指标名称的任何给定标签组合都标识该指标的特定维度实例化(例如:所有使用该方法的HTTP请求都 POST/api/tracks 处理程序)。查询语言允许基于这些维度进行过滤和聚合。更改任何标签值,包括添加或删除标签,都将创建一个新的时间序列。

标签名称可以包含ASCII字母、数字以及下划线。它们必须匹配正则表达式[a-zA-Z][a-zA-Z0-9]*。以__开头的标签名称留作内部使用。

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

具有空标签值的标签被认为等同于不存在的标签。

请参见为度量标准和标签命名的最佳实践

样本

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

  • 一个 float64 值
  • 一个毫秒精度的时间戳

符号

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

{

例如,度量名称为 api_http_requests_total 的时间序列和标签method="POST"handler="/messages" 可以写成这样:

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

这与OpenTSDB使用的符号相同。

指标类型

Prometheus客户机库提供了四种核心度量类型。目前,它们仅在客户机库(以支持针对特定类型的使用而定制的api)和有线协议中有所区别。Prometheus服务器还没有使用类型信息,而是将所有数据扁平化为无类型的时间序列。这种情况将来可能会改变。

计数器

计数器是一种累积度量,它表示一个单调递增的计数器,其值只能在重新启动时增加或重置为零。例如,您可以使用一个计数器来表示服务的请求、完成的任务或错误的数量。

不要使用计数器公开可能减少的值。例如,不要使用计数器来表示当前正在运行的进程的数目;用量规代替。

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

度量器

规范是一种度量,它表示一个可以任意上下移动的单一数值。

仪表通常用于测量值,如温度或当前内存使用量,但也可用于“计数”,如并发请求的数量。

度量器的客户端库使用文档:

直方图

直方图对观察数据(通常是请求持续时间或响应大小)进行采样,并按可配置的桶数进行计数。它还提供了所有观察值的总和。

基线度量名称为的直方图在获取过程中暴露多个时间序列:

  • 观察桶的累计计数器,暴露为 <basename>_bucket{le="<upper inclusive bound>"}
  • 所有观察值的总和,公开为_sum
  • 观察到的事件的计数,显示为_count(与上面_bucket{le="+Inf"}相同)

job和实例