如何配置 Prometheus 在单个周期内抓取主机名后面的所有 IP?
How to config Prometheus to scrape all IPs behind a hostname in single period?
我已经在一个主机名后面配置了我所有的服务器,我想在一段时间内从所有服务器上抓取指标。
当我配置如下:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: gamelet-smoba
honor_timestamps: true
metrics_path: /metrics
scheme: http
relabel_configs:
- source_labels: [__meta_dns_name]
target_label: service
dns_sd_configs:
- names:
- my-hostname
refresh_interval: 2s
type: A
port: 29836
普罗米修斯画像:
也就是说dns_sd_configs
可以替代单一IP?
如果想监控所有的IP怎么办?
问题中的配置对于任务来说似乎是正确的。但是,为了使其正常工作,DNS 响应必须一次包含 所有目标 IP。它的工作方式是这样的:
- Prometheus 发出 DNS 请求以获取目标列表。
- 为
refresh_interval: 2s
缓存目标列表。
- Prometheus 为列表中的每个目标发出一个抓取请求。
在下一次迭代中(由 scrape_interval
定义)如果目标列表尚未过期,Prometheus 可能会跳过 p.1 和 p.2。问题是 DNS 服务器只返回一个 IP,因此,普罗米修斯在每个 scrape_interval
只发出一个抓取请求。随机选择的目标收到了它唯一的基于 IP 的 instance
标签,这就是图表看起来断开连接的原因。
我已经在一个主机名后面配置了我所有的服务器,我想在一段时间内从所有服务器上抓取指标。
当我配置如下:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: gamelet-smoba
honor_timestamps: true
metrics_path: /metrics
scheme: http
relabel_configs:
- source_labels: [__meta_dns_name]
target_label: service
dns_sd_configs:
- names:
- my-hostname
refresh_interval: 2s
type: A
port: 29836
普罗米修斯画像:
也就是说dns_sd_configs
可以替代单一IP?
如果想监控所有的IP怎么办?
问题中的配置对于任务来说似乎是正确的。但是,为了使其正常工作,DNS 响应必须一次包含 所有目标 IP。它的工作方式是这样的:
- Prometheus 发出 DNS 请求以获取目标列表。
- 为
refresh_interval: 2s
缓存目标列表。 - Prometheus 为列表中的每个目标发出一个抓取请求。
在下一次迭代中(由 scrape_interval
定义)如果目标列表尚未过期,Prometheus 可能会跳过 p.1 和 p.2。问题是 DNS 服务器只返回一个 IP,因此,普罗米修斯在每个 scrape_interval
只发出一个抓取请求。随机选择的目标收到了它唯一的基于 IP 的 instance
标签,这就是图表看起来断开连接的原因。