Prometheus:基于通配符 dns 的发现
Prometheus: wildcard dns - based discovery
在prometheus
documentation中,有一个使用dns
进行服务发现的示例,其中应将以下代码片段添加到配置文件中:
scrape_configs:
- job_name: 'myjob'
dns_sd_configs:
- names:
- 'telemetry.eu-west.api.srv.example.org'
- 'telemetry.us-west.api.srv.example.org'
- 'telemetry.eu-west.auth.srv.example.org'
- 'telemetry.us-east.auth.srv.example.org'
我的问题是是否可以应用基于通配符的模式,例如:
scrape_configs:
- job_name: 'myjob'
dns_sd_configs:
- names:
- '*.eu-west.api.srv.example.org'
如果不是,是否使用 A 记录解析所有需要抓取的 IP 地址(即由 prometheus 监控)?
这是不可能的,因为通配符不是 DNS 网络协议的一部分。 ($GENERATE
是 Bind 之类的内部模板功能,不会出现在网络上)。
If not, is the usage of an A record that resolves to all the IP addresses that need to be scraped (i.e. monitored by prometheus) the way around this?
是的,这是一种方式,不过您只能在那时获得 IP 地址。如果您需要更多的元数据,最好使用不同的 SD。
在prometheus
documentation中,有一个使用dns
进行服务发现的示例,其中应将以下代码片段添加到配置文件中:
scrape_configs:
- job_name: 'myjob'
dns_sd_configs:
- names:
- 'telemetry.eu-west.api.srv.example.org'
- 'telemetry.us-west.api.srv.example.org'
- 'telemetry.eu-west.auth.srv.example.org'
- 'telemetry.us-east.auth.srv.example.org'
我的问题是是否可以应用基于通配符的模式,例如:
scrape_configs:
- job_name: 'myjob'
dns_sd_configs:
- names:
- '*.eu-west.api.srv.example.org'
如果不是,是否使用 A 记录解析所有需要抓取的 IP 地址(即由 prometheus 监控)?
这是不可能的,因为通配符不是 DNS 网络协议的一部分。 ($GENERATE
是 Bind 之类的内部模板功能,不会出现在网络上)。
If not, is the usage of an A record that resolves to all the IP addresses that need to be scraped (i.e. monitored by prometheus) the way around this?
是的,这是一种方式,不过您只能在那时获得 IP 地址。如果您需要更多的元数据,最好使用不同的 SD。