Prometheus 的 job 标签是什么?

job 标签初始默认取 scrape_config 的 job_name,可被重标记或标签冲突处理改变,标识一组同类抓取目标(如所有 node exporter),与 instance 标签一起构成 Prometheus 最基本的两个维度。本文讲清 job 的作用、命名规范与常见用法。

最佳实践
Prometheus 的 job 标签是什么?封面

job 标签初始默认取 scrape_config 里的 job_name,但可被重标记或冲突处理改变——它把同一类抓取目标归为一组(比如 job="node" 代表全部服务器节点),是 Prometheus 查询中最常用的分组维度。

job 与 instance 的分工

scrape_configs:
  - job_name: 'node'          # → job="node"
    static_configs:
      - targets: ['10.0.0.1:9100', '10.0.0.2:9100']   # → instance="10.0.0.1:9100" ...
  • job:这是什么类型的采集(节点、MySQL、应用 API);
  • instance:具体是哪一个目标。

典型查询:up{job="node"} 看所有节点存活、sum by (job) (rate(http_requests_total{job="api"}[5m])) 比较已有该计数器的API请求速率;up只表示抓取成功,不是完整应用健康。

命名规范建议

  • 小写、下划线分词:mysql_prod、api_gateway;
  • 一类组件一个 job,别一个 job 混杂不同端口/用途的目标;
  • 环境差异用额外标签(env="prod")而非塞进 job 名——但实践上 mysql-prod 这种命名也很常见,团队统一即可。

注意

  • job 标签可以被 relabel 改写;
  • 目标自身指标若带 job 标签,默认 honor_labels=false 时目标原值改名为 exported_job,再使用采集侧 job;honor_labels=true 则保留目标样本标签,冲突的采集侧标签不附加。

常见问题(FAQ)

Q:job 能省掉吗? scrape_config 的 job_name 必填,但最终样本的 job 标签可被重标记或删除,两者不是同一个要求。

Q:一个 job 能抓不同端口吗? 可以,targets 里各自写端口;但语义混杂时建议拆 job。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台