如何使用 Prometheus 监控/发现更多 docker 容器



我在本地使用 prometheus、node-exporter 和 grafana 和 docker-compose 来查看如何显示指标。是否可以在docker-compose.yml中添加容器作为服务(例如apache ginx),并发现该服务,以便也考虑其指标?文档在解释这一点方面没有太大帮助。

如果一切都需要在本地运行(即,您的普罗米修斯和受监控的实体都在同一台机器上),我不会为正确的自动发现而烦恼。相反,我只是在 Prometheus 中有一个静态配置文件,列出了它需要监控的每个服务。

这些服务中的每一个都将在 docker 容器中运行,每个服务都有自己的指标导出应用程序(如节点导出器或 Telegraf)。是的,这意味着你需要用telegraf(或其他工具)扩展你的nginx-docker,以获得一个发出指标的docker容器。

这样,普罗米修斯将为n个服务抓取n个URL。您可能可以在 --net=host 模式下运行所有这些服务,但随后每个服务都需要在不同的端口中导出其指标。

请记住,当您从 docker 容器收集指标时,某些指标可能是错误的,因为容器对系统的视图有限。因此,OS/硬件指标可能已关闭。但是,如果您对自定义/应用级指标感兴趣,那应该没问题。

所以,总结一下: - 每个 docker 都需要运行自己的导出器(可能在不同的端口导出) - 普罗米修斯应配置为知道在哪里查找这些服务中的每一个。

如果您真的想要自动发现,请查看 Consul 以及它如何与 Prometheus 集成。我被告知您实际上可以在同一台机器上运行 consul-server 和 consul-client,有了它,您可以设置 Prometheus 以从 Consul 读取服务列表(意味着具有自动发现),而无需在配置文件中明确列出它们中的每一个。

使用 zookeeper也应该有效:您的容器将向 zookeeper 注册,Prometheus 将从 zk 知道它们(免责声明:我从未尝试过这种特定配置)。

最新更新