概述
promethues是一套开源的系统监控报警框架。Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果。
今天主要介绍一下prometheus任务与实例的一些概念。
一、任务与实例
对于Prometheus,pull拉取采样点的端点服务称之为instance,通常对应一个过程(实例)。具有相同目的的instance,例如,为可伸缩性或可靠性而复制的流程称为作业。, 则构成了一个job。即当我们需要采集不同的监控指标(例如:主机、MySQL、Nginx)时,我们只需要运行相应的监控采集程序,并且让Prometheus Server知道这些Exporter实例的访问地址。在Prometheus中,每一个暴露监控样本数据的HTTP服务称为一个实例。例如在当前主机上运行的node exporter可以被称为一个实例(Instance)。而一组用于相同采集目的的实例,或者同一个采集进程的多个副本则通过一个一个任务(Job)进行管理。
例如, 一个被称作api-server的任务有四个相同的实例。
当前在每一个Job中主要使用了静态配置(static_configs)的方式定义监控目标。除了静态配置每一个Job的采集Instance地址以外,Prometheus还支持与DNS、Consul、E2C、Kubernetes等进行集成实现自动发现Instance实例,并从这些Instance上获取监控数据。
除了通过使用“up”表达式查询当前所有Instance的状态以外,还可以通过Prometheus UI中的Targets页面查看当前所有的监控采集任务,以及各个任务下所有实例的状态:
二、自动化生成的标签和时间序列
当Prometheus拉取一个目标,会自动地把两个标签添加到度量名称的标签列表中,分别是:
- job: 目标所属的配置任务名称。
- instance: 被抓取的目标网址的一部分务: host:port
如果以上两个标签二者之一存在于采样点中,这个取决于honor_labels配置选项。
对于每个采样点所在服务instance,Prometheus都会存储以下的度量指标采样点:
- up{job="[job-name]