首页 文章

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

提问于
浏览
0

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

1 回答

  • 1

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

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

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

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

    总而言之: - 每个码头 Worker 需要运行自己的出口商(可能在不同的端口出口) - prometheus应该配置为知道在哪里寻找这些服务 .

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

    使用zookeeper也应该工作:你的容器会注册到zookeeper,Prometheus会从zk知道它们(免责声明:我从未尝试过这种特殊的配置) .

相关问题