Prometheus 如何给某个 Target 添加专属标签?
在 static_configs 中按 targets 分组配置 labels 即可给特定 target 加专属标签;服务发现场景用 relabel_configs 从元数据标签生成。本文给出两种方式的配置示例。
最直观的方式:static_configs 里把该 target 单独列为一个块,块内的 labels 就是它的专属标签,会附加到从这个 target 采到的所有指标上。
static_configs 分组加标签
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10.0.0.1:9100']
labels:
datacenter: 'bj-01'
role: 'db'
- targets: ['10.0.0.2:9100']
labels:
datacenter: 'sh-01'
role: 'cache'
两组 target 共享 job 的其他配置(路径、间隔),但各自带不同标签。
服务发现场景:relabel 生成标签
K8s/Consul 等动态发现的目标没有 static_configs 可写,用 relabel 从元数据生成:
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
注意事项
- 标签加在采集侧意味着换标签值=换序列,历史数据不会自动关联;
- 专属标签克制使用——每个独特标签组合都是新时序,别把 IP、时间戳这类易变值做成标签;
- 事后补救可用
metric_relabel_configs(抓取后改写指标标签)。
观测云对照
观测云 DataKit 的每个采集器配置都支持自定义 tags 字段,效果相同;在观测云控制台还能给主机/对象批量打标签用于分组筛选。
常见问题(FAQ)
Q:同 job 下所有 target 共用标签怎么写? 在 job 级 labels(honor_labels 场景)或每组 static_configs 重复写。
Q:加的标签和指标自带标签冲突怎么办? 默认抓取侧标签优先(honor_labels: false 时重命名指标侧为 exported_xxx)。