Prometheus 中,将任意一个独立的数据源(target)称之为实例(instance),相同类型实例的集合被称为作业(job)。
如下是一个包含四个实例的作业:
- job: api-server
- instance 1: 1.2.3.4:5670
- instance 2: 1.2.3.4:5671
- instance 3: 5.6.7.8:5670
- instance 4: 5.6.7.8:5671
Prometheus 在采集数据的同时,会自动在时序的基础上添加一些标签,作为数据源(target)的标识,以便用于区分:
job: The configured job name that the target belongs to.
instance: The <host>:<port> part of the target's URL that was scraped.
如果其中任一标签已经在此前采集的数据中存在,那么将会根据 honor_labels
设置选项来决定是否进行覆盖。详见官网解释: scrape configuration documentation
Prometheus 也提供了针对每个实例抓取的一些指标信息:
up{job="<job-name>", instance="<instance-id>"}: 1 表示该实例正常工作
up{job="<job-name>", instance="<instance-id>"}: 0 表示该实例故障
scrape_duration_seconds{job="<job-name>", instance="<instance-id>"} 表示拉取数据的时间间隔
scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"} 表示采用重定义标签(relabeling)操作后仍然剩余的样本数
scrape_samples_scraped{job="<job-name>", instance="<instance-id>"} 表示从该数据源获取的样本数
其中 up
可以用来检测实例是否正常工作,值为 1 表示 Prometheus 抓取正常,从而反映被抓取的实例工作健康;反之表示实例不能正常抓取,很可能实例已经 panic。