Prometheus 指标数据生命周期

2019-09-16 0 By admin

一、生命周期

Prometheus 在处理数据指标的过程中,包括【抓取的生命周期】和【标签的生命周期】。
默认情况下,当 Prometheus加载 Target 实例完成后,这些Target时候都会包含一些默认的标签:这些标签将会告诉Prometheus如何从该Target实例中获取监控数据。

prometheus life

二、服务发现

在每个scrape_interval期间, Prometheus 都会检测执行的作业。这些作业将生成目标列表,既【服务发现】的过程。
服务发现返回一个目标列表,其中包含一组称为【元数据】的标签,这些标签以__meta__为前缀。每个服务发现的机制都有不同的元数据。
服务发现还会根据目标的配置来设置其他的标签,这些标签都以__为前缀和后缀,包括__scheme__、__address__和__metric_path__。这些标签包括目标的模式(https或者http)、目标的地址和指标的具体路径。
为什么在 Prometheus 界面中看不到这些【配置标签】?
有些标签在生命周期的后期被删除了,并且所有这些标签都会专门删除掉,不在WEB UI 上显示。

三、抓取过程

Prometheus 提供了可以重新标记目标的机会,并可以在服务发现前添加一些元数据。你也可以过滤目标、以删除和保留特定的目标。
然后就是真正的抓取操作和指标数据返回。当指标被抓取时,可以使用metric_relabel_configs 做最后的重新标记和过滤。

四、标签

Prometheus 标签提供了时间维度。它可以定义目标,并为时间序列提供上下文。
更改或者添加标签会创建新的时间序列。

五、默认标签说明

一般来说,Target 以 __ 作为前置的标签是在系统内部使用的,因此这些标签不会被写入到样本数据中。
不过这里有一些例外,例如,我们会发现所有通过Prometheus采集的样本数据中都会包含一个名为instance的标签,该标签的内容对应到Target实例的__address__。这里实际上是发生了一次标签的重写处理。

六、Relabeling

这种发生在采集样本数据之前,对Target实例的标签进行重写的机制在Prometheus被称为Relabeling。
Prometheus允许用户在采集任务设置中通过relabel_configs来添加自定义的Relabeling过程。
replace/labelmap/labelkeep/labeldrop操作对标签进行管理。

七、系统使用的标签

  1. __address__:当前Target实例的访问地址[host]:[port]
  2. __scheme__:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS
  3. __metrics_path__:采集目标服务访问地址的访问路径
  4. __param_:采集任务目标服务的中包含的请求参数
  5. __name__: 此标签是标识指标名称的预留标签。