如何使用prometheus监视/发现更多的docker容器

时间:2017-03-16 13:42:09

标签: docker-compose metrics grafana prometheus

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

1 个答案:

答案 0 :(得分:1)

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

这些服务中的每一个都将在docker容器中运行,每个容器都有自己的度量导出应用程序(如node-exporter或Telegraf)。是的,这意味着您需要使用telegraf(或其他工具)扩展您的nginx-docker以使用公制发射的docker容器。

就这样,普罗米修斯会为n个服务抓取网址。您可以在--net = host模式下运行它们,但随后每个服务都需要将其指标导出到不同的端口。

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

所以,总结:   - 每个docker需要运行自己的导出器(可能在不同的端口导出)   - prometheus应配置为知道在哪里寻找这些服务。

如果您真的想要自动发现,请查看Consul以及它如何与Prometheus集成。我告诉你可以在同一台机器上实际运行consul-server和consul-clients,然后用它来设置Prometheus来读取Consul的服务列表(意思是,有自动 - 发现),而不必在配置文件中明确列出每个。

使用zookeeper也应该可以工作:你的容器会在zookeeper中注册,Prometheus会从zk知道它们(免责声明:我从来没有尝试过这种特殊的配置)。