作业 (Jobs) 和实例 (Instances)
在 Prometheus 的语境中,可以被抓取的目标称为实例 (instance),通常对应于单个进程。一组具有相同目的(例如,为了可扩展性或可靠性而复制的进程)的实例集合,称为作业 (job)。
例如,一个拥有四个副本实例的 API 服务器作业:
- 作业 (job):
api-server- 实例 1:
1.2.3.4:5670 - 实例 2:
1.2.3.4:5671 - 实例 3:
5.6.7.8:5670 - 实例 4:
5.6.7.8:5671
- 实例 1:
自动生成的标签和时间序列
当 Prometheus 抓取一个目标时,它会自动为抓取的时间序列添加一些标签,这些标签用于标识被抓取的目标。
job:目标所属的已配置作业名称。instance:被抓取目标 URL 的<host>:<port>部分。
如果抓取的数据中已经存在这些标签中的任何一个,其行为将取决于 honor_labels 配置选项。更多信息请参见抓取配置文档。
对于每一次实例抓取,Prometheus 都会存储一个样本 (sample)到以下时间序列中:
up{job="<job-name>", instance="<instance-id>"}:如果实例健康(即可以触达),则为1;如果抓取失败,则为0。scrape_duration_seconds{job="<job-name>", instance="<instance-id>"}:抓取的持续时间。scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}:应用指标重命名后剩余的样本数量。scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}:目标公开的样本数量。scrape_series_added{job="<job-name>", instance="<instance-id>"}:本次抓取中新增序列的大致数量。v2.10 新增
up 时间序列对于监控实例可用性非常有用。
使用 extra-scrape-metrics 特性标志,可以获得更多额外指标:
scrape_timeout_seconds{job="<job-name>", instance="<instance-id>"}:目标的已配置scrape_timeout。scrape_sample_limit{job="<job-name>", instance="<instance-id>"}:目标的已配置sample_limit。如果没有配置限制,则返回零。scrape_body_size_bytes{job="<job-name>", instance="<instance-id>"}:最近一次抓取响应的未压缩大小(如果成功)。因超出body_size_limit而失败的抓取将报告 -1,其他抓取失败将报告 0。