首页/云/可观测性速查/dns_sd:基于 DNS SRV 记录发现目标
Prometheus 与采集64 条

dns_sd:基于 DNS SRV 记录发现目标

dns_sd_configs 通过 DNS SRV 记录动态发现目标地址与端口,适合目标以域名集中管理的环境;支持 SRV、A、AAAA 三种记录类型。

可观测性速查云更新于 2026-10-13

dns_sd 是什么

dns_sd_configs 让 Prometheus 通过 DNS 记录动态发现抓取目标:用 SRV 记录可以同时拿到主机与端口,用 A 或 AAAA 记录则只拿到地址、端口沿用配置里的默认值。它适合目标地址以域名集中管理的环境——在 DNS 里增加或删除一条记录就等于增删一个抓取目标,不必再推动一次 Prometheus 配置发布。

基本信息

配置位置scrape_configs[].dns_sd_configs
支持记录类型SRV、A、AAAA
关键字段names、type、refresh_interval、port
行为特点SRV 记录中的端口会成为抓取端口
适用版本Prometheus 2.x

典型使用场景

  • 集中管理地址:目标清单维护在 DNS 里,由 DNS 流程负责变更与留痕
  • 服务扩缩容:新增实例注册 SRV 记录即自动纳入抓取
  • 多环境隔离:各环境使用各自域名,配置模板可以复用
  • 无服务发现组件:不引入 Consul 或 Kubernetes 也能做动态发现
  • 迁移过渡:从静态目标列表迁往动态发现的低成本方案

使用要点

  • 需要改写端口时配合 relabel_configs 处理目标地址,不要硬改配置文件
  • TTL 与 refresh_interval 一起决定变更生效速度,两者都要合理设置
  • 解析失败时目标整体消失,up 序列也会消失(不是变成 0)
  • 域名解析依赖可靠的 DNS 服务,解析链路本身也要纳入监控
  • 用 Service Discovery 页面核对发现到的目标与最终标签

配置与对应记录

配置与对应记录
scrape_configs:
  - job_name: 'dns-app'
    dns_sd_configs:
      - names: ['_http-metrics._tcp.app.example.com']
        type: SRV
        refresh_interval: 30s

# 对应的 SRV 记录(示例)
# _http-metrics._tcp.app.example.com. 30 IN SRV 0 5 8080 node1.example.com.
# _http-metrics._tcp.app.example.com. 30 IN SRV 0 5 8080 node2.example.com.

记录类型对照

类型拿到什么适用
SRV主机与端口需要动态端口或集中登记
AIPv4 地址端口固定、地址动态变化
AAAAIPv6 地址IPv6 环境
names查询的域名列表可配置多个域名合并结果
refresh_interval刷新周期与 TTL 一起权衡生效速度
SRV 记录中的端口会成为抓取端口;需要改写端口时配合 relabel_configs 处理目标地址标签,而不是在 DNS 记录里绕弯。

排查要点

  • 目标整体消失先查 Prometheus 日志里的解析错误,不要只盯着 Targets 页面
  • 新增记录后长时间不生效,先核对 TTL 与 refresh_interval 是否都偏大
  • 抓取端口与预期不符时,先确认 SRV 记录里的端口字段写的是什么
  • 在 Service Discovery 页面核对发现结果与 relabel 之后的最终标签
  • 解析服务本身要有可用性监控,避免发现机制故障造成大面积目标丢失

易错点

  • 解析失败时目标整体消失,up 序列也会消失(不是变成 0),排查先看 Prometheus 日志
  • TTL 与 refresh_interval 设置不当会让目标变更延迟数分钟才生效,扩容后容易误判为没生效
  • 使用 SRV 却不清楚端口来自记录本身,抓取端口与预期不符时先核对记录内容
  • 依赖 DNS 做发现却不监控解析链路,解析服务故障会表现为大批目标同时消失

数据来源与参考

  • Prometheus 文档 · dns_sd_config
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌