Consul SD 常见标签

Consul SD 常见标签用途对照表

本文档整理了 Prometheus 使用 consul_sd_configs 时常见的内部标签(__meta_consul_*)以及它们的用途,尤其适合 Blackbox Exporter 场景。


一、先说几个最容易混淆的标签

在 Consul SD + Blackbox 场景里,最常见、也最容易搞混的是这几个:

  • __meta_consul_service_address
  • __meta_consul_service_port
  • __address__
  • __param_target
  • instance
  • __meta_consul_tagged_address_lan

它们并不是一回事。


二、常见标签用途总表

标签名 来源 典型值 是否是内部标签 主要用途 常见误区
__meta_consul_service Consul 服务名 https_probe 区分 Consul 注册的服务名 不是目标地址
__meta_consul_service_address Consul Service Address 10.10.1.20 服务注册地址 常常只有 IP,没有端口
__meta_consul_service_port Consul Service Port 2379 服务端口 单独不能直接用于 blackbox 探测
__address__ Prometheus 发现后的目标地址 10.10.1.20:2379 Prometheus 当前认为的抓取地址 后续可能被改写为 Blackbox 地址
__param_target relabel 后生成 10.10.1.20:2379 Blackbox 的 target= 参数 不是自动生成的,通常要手动映射
instance scrape 最终展示标签 10.10.1.20:2379 Prometheus 中展示目标实例 不设置时可能显示成 blackbox 地址
__meta_consul_tagged_address_lan Consul Tagged Address 中的 LAN 地址 10.10.1.20 获取实例 LAN 地址 不是所有注册都有这个字段
__meta_consul_tags Consul 服务 tags prod,etcd 用于筛选目标 容易和 metadata 混淆
__meta_consul_service_metadata_target_use Consul Service Meta etcd 获取服务用途 来自 meta 不是 tags
__meta_consul_service_metadata_hostname Consul Service Meta node-01 获取主机名 需要服务注册时显式写入 meta
__meta_consul_service_metadata_cluster Consul Service Meta rg6_nangang 获取集群名 需要服务注册时提供

三、重点标签详细说明


1. __meta_consul_service

来源

Consul 中注册的服务名。

示例

text 复制代码
https_probe
用途
通常用于记录服务类型、服务发现来源。

常见写法
- source_labels: ['__meta_consul_service']
  target_label: 'exporter_name'
说明
它只是服务名,不是地址,不是实例,不带端口。

2. __meta_consul_service_address
来源
Consul 注册服务时的 ServiceAddress。

示例
10.10.1.20
用途
表示实例的服务地址,可作为展示标签保存。

常见写法
- source_labels: ['__meta_consul_service_address']
  target_label: 'target_ident'
注意点
它通常只有 IP/域名,不包含端口。
所以直接拿来做 TCP blackbox 的 target,可能不够。

常见误区
误以为它等于:

10.10.1.20:2379
实际上很多情况下它只是:

10.10.1.20
3. __meta_consul_service_port
来源
Consul 服务注册中的端口。

示例
2379
用途
保存实例端口,便于打标签和组装地址。

常见写法
- source_labels: ['__meta_consul_service_port']
  target_label: 'target_port'
注意点
它只是端口号,不能单独作为 blackbox 目标。

4. __address__
来源
Prometheus 服务发现后的标准目标地址。

示例
10.10.1.20:2379
用途
这是 Prometheus 当前默认要抓取的地址。

在 blackbox 场景中的关键作用
通常会先把它转存为 __param_target:

- source_labels: [__address__]
  target_label: __param_target
然后再把 __address__ 改写成 blackbox exporter:

- target_label: __address__
  replacement: 10.10.1.20:9115
注意点
在 blackbox 配置里:

一开始的 __address__ = 被探测目标
改写之后的 __address__ = blackbox exporter 地址
所以它是会变化的。

5. __param_target
来源
通过 relabel 手动写入的特殊内部标签。

示例
10.10.1.20:2379
用途
传给 Blackbox Exporter 作为探测参数:

/probe?target=10.10.1.20:2379
常见写法
- source_labels: [__address__]
  target_label: __param_target
注意点
它不是 Consul 自动给的,也不是 Prometheus 自动生成的,
而是你在 relabel_configs 中手动设置的。

常见误区
误以为 __param_target 是普通标签。
实际上它是一个 特殊参数标签,用于生成 scrape URL 参数。

6. instance
来源
Prometheus 最终指标标签。

示例
10.10.1.20:2379
用途
表示最终展示给用户看的实例标识。

常见推荐写法
- source_labels: [__param_target]
  target_label: instance
为什么要手动设置
如果不设置,在 blackbox 场景里 instance 很可能显示成:

10.10.1.20:9115
也就是 blackbox exporter 自己,而不是被探测目标。

推荐做法
在 blackbox job 里几乎总是建议补一条:

- source_labels: [__param_target]
  target_label: instance
7. __meta_consul_tagged_address_lan
来源
Consul 服务实例的 Tagged Addresses 中的 lan 地址。

示例
10.10.1.20
用途
表示实例的 LAN 网络地址,通常用于标记来源地址、内网地址或节点网络属性。

常见写法
- source_labels: ['__meta_consul_tagged_address_lan']
  target_label: 'source'
适合场景
区分实例内网地址
做来源标识
在多网卡/多地址环境中保留 LAN 地址信息
注意点
不是所有 Consul 注册实例都会有 TaggedAddresses.lan。
如果注册信息里没有 lan,那这个标签就不会有值。

和 __meta_consul_service_address 的区别
标签	含义	典型用途
__meta_consul_service_address	服务注册声明的地址	作为服务目标地址
__meta_consul_tagged_address_lan	Consul 记录的 LAN 地址	作为来源地址、节点 LAN 地址标识
在某些环境里,这两个值可能一样;在复杂网络环境里,可能不同。

例如:

service_address = 172.16.1.100
tagged_address_lan = 10.10.1.20
那就说明服务对外注册地址和节点 LAN 地址不是同一个。

8. __meta_consul_tags
来源
Consul 服务注册中的 tags。

示例
prod,etcd
用途
用于筛选服务实例。

常见写法
- source_labels: ['__meta_consul_tags']
  action: keep
  regex: '.*etcd.*'
说明
含义是:

只保留 tags 中包含 etcd 的目标。

常见误区
不要和 meta 混了:

tags 是标签列表
meta 是键值对
9. __meta_consul_service_metadata_target_use
来源
Consul Service Meta 中的 target_use 字段。

示例
etcd
用途
表示该服务实例的用途。

常见写法
- source_labels: ['__meta_consul_service_metadata_target_use']
  target_label: 'target_use'
说明
它来源于 Consul 服务注册里的:

"meta": {
  "target_use": "etcd"
}
10. __meta_consul_service_metadata_hostname
来源
Consul Service Meta 中的 hostname 字段。

示例
node-01
常见写法
- source_labels: ['__meta_consul_service_metadata_hostname']
  target_label: 'hostname'
11. __meta_consul_service_metadata_cluster
来源
Consul Service Meta 中的 cluster 字段。

示例
rg6_nangang
常见写法
- source_labels: ['__meta_consul_service_metadata_cluster']
  target_label: 'cluster'

四、推荐 blackbox relabel 模板
下面是一版较常见、较规范的写法:

relabel_configs:
  - source_labels: ['__meta_consul_tags']
    action: keep
    regex: '.*etcd.*'

  - source_labels: ['__meta_consul_service']
    target_label: 'exporter_name'

  - source_labels: ['__meta_consul_service_address']
    target_label: 'target_ident'

  - source_labels: ['__meta_consul_service_port']
    target_label: 'target_port'

  - source_labels: ['__meta_consul_tagged_address_lan']
    target_label: 'source'

  - source_labels: ['__meta_consul_service_metadata_hostname']
    target_label: 'hostname'

  - source_labels: ['__meta_consul_service_metadata_cluster']
    target_label: 'cluster'

  - source_labels: ['__meta_consul_service_metadata_target_use']
    target_label: 'target_use'

  - source_labels: [__address__]
    target_label: __param_target

  - source_labels: [__param_target]
    target_label: instance

  - target_label: __address__
    replacement: 172.20.101.156:9115
    

## **五、一张最通俗的关系图**

Consul 中的服务实例
  ├─ ServiceName            -> __meta_consul_service
  ├─ ServiceAddress         -> __meta_consul_service_address
  ├─ ServicePort            -> __meta_consul_service_port
  ├─ TaggedAddresses.lan    -> __meta_consul_tagged_address_lan
  ├─ Tags                   -> __meta_consul_tags
  └─ Meta.target_use        -> __meta_consul_service_metadata_target_use
     Meta.hostname          -> __meta_consul_service_metadata_hostname
     Meta.cluster           -> __meta_consul_service_metadata_cluster

Prometheus 服务发现后
  └─ __address__            -> 一般为 ServiceAddress:ServicePort

Blackbox 场景
  ├─ __address__            -> 先拷贝到 __param_target
  ├─ __param_target         -> 真正被探测的目标
  ├─ __address__            -> 再改写成 Blackbox Exporter 地址
  └─ instance               -> 建议设置为 __param_target
  
六、一句话总结
在 Consul SD + Blackbox 中:

__meta_consul_service_address:服务注册地址
__meta_consul_service_port:服务端口
__meta_consul_tagged_address_lan:实例 LAN 地址
__address__:Prometheus 当前目标地址,通常是 IP:PORT
__param_target:传给 blackbox 的真实探测目标
instance:最终展示给用户看的实例名
如果你愿意,我下一步可以继续帮你补一份:

"Consul 注册字段 → Prometheus SD 标签 → 推荐 relabel 用法" 三列表
这样你以后看任何 __meta_consul_* 都能直接知道从哪来、该怎么用。
相关推荐
张3231 小时前
角色与内容集合:自动化配置的标准化复用机制
运维·自动化·ansible
十五年专注C++开发1 小时前
HDF5: 大数据的 “超级容器“
大数据·数据库·c++·hdf5
Black蜡笔小新1 小时前
企业私有化AI部署方案DLTM企业级AI模型工作站:零代码私有化,企业AI训练服务器新选择
运维·服务器·人工智能
李日灐1 小时前
<4>Linux 权限:从 Shell 核心原理 到 权限体系的底层逻辑 详解
linux·运维·服务器·开发语言·后端·面试·权限
森叶1 小时前
2026 年 Google SEO 核心机制整合&两类落地页设计指导
数据库
寒秋花开曾相惜2 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全
运维小斌2 小时前
麒麟v10arm使用dnsmasq部署本地DNS服务器
linux·运维·服务器·网络
AI服务老曹2 小时前
深度解析:基于 Docker 与 GB28181 的异构计算 AI 视频管理架构,如何实现 X86/ARM 与 GPU/NPU 的全场景兼容?
运维·docker·容器