gpt4 book ai didi

docker - docker swarm relabel 实例中的 Prometheus dns 服务发现

转载 作者:行者123 更新时间:2023-12-02 18:29:42 25 4
gpt4 key购买 nike

我的问题是对 Prometheus dns service discovery in docker swarm 的补充.

我将普罗米修斯抓取目标定义如下:

- job_name: 'node-exporter'
dns_sd_configs:
- names:
- 'tasks.nodeexporter'
type: 'A'
port: 9100

这可以正常工作,但会导致 prometheus 使用 docker 容器的 IP 作为实例标签。

我尝试重新标记实例标签,如下所示:
relabel_configs:
- source_labels: [__meta_dns_name]
target_label: instance

但是这样做会导致节点导出器的所有实例都具有相同的标签“tasks.nodeexporter”。

是否可以以某种方式将实例标签重新标记为诸如 tasks.nodexporter_1、tasks.nodeexporter_2、...之类的东西?

最佳答案

Prometheus 不支持 docker swarm 设置的服务发现,因为 swarm 端缺少许多功能。

dns 服务发现是减轻这些缺失功能的一种方法,但我认为这不是一个好的解决方案,我建议不要在生产中使用它:

  • 无法提供其他信息,例如使用 SRV 记录
  • 没有关于应该运行多少实例的信息
  • 由于 dns 仅列出健康的任务,当一项任务不再被认为是健康的时,抓取目标的数量会减少,这使得对行为不端的容器发出警报
  • 当容器死亡并重新启动时,您将观察到新实例,因为没有可用任务槽之类的信息

  • 总之,这些问题不允许这种方法成为监控系统的可靠来源。

    如果你真的很喜欢使用 docker swarm,你应该考虑通过编程查询 docker api 并使用 Prometheus 的 file_sd 服务发现机制来构建一个更可持续的解决方案。请参阅容器解决方案的此 poc 以供引用: https://github.com/ContainerSolutions/prometheus-swarm-discovery

    关于docker - docker swarm relabel 实例中的 Prometheus dns 服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097742/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com