在讨论如何对容器进行实时监视之前,有必要指出实时监视容器所带来的特殊挑战。最明显的是,在一个容器化的环境中,组件总是会消失。在传统环境中,您监控的大多是相对静态的服务器和应用程序。但容器是不断变化的。 因此,在容器化的环境中,你需要监控更多的东西,甚至会受到更多的干扰。因此,在混乱繁多的数据中甄别有意义的数据是比较困难的,特别是当你需要实时监控的时候,更不应把时间浪费在甄别过程上。由于Docker将容器从主机中抽离的方式,实时监控容器化的环境可能会更加困难。当您处理容器时,您是无法简单地通过在主机上运行诸如top或ps之类的监控命令,来准确了解容器内发生的情况的。
大规模地从容器内部进行实时监控是几乎无法实现的,因此,解决这一难题的方法是使用代理或换一种更巧妙的监控解决方案,为容器及其支持的服务提供实时可见性。
一般情况下,zabbix监控docker已经不再是比较好的选择,因为容器的快速创建和消亡已经不适合通过侵入式的监控方法,业内较为通用的是采取 Prometheus 监控的方式。
监控Docker容器Prometheus提供了几种方法来监控Docker,包括一些自定义exporter。然而,这些exporter一般都不会用到,推荐的方法是使用Google的cAdvisor工具。在Docker守护进程上,cAdvisor作为Docker容器运行,单个cAdvisor容器返回针对Docker守护进程和所有正在运行的容器的指标。Prometheus支持通过它导出指标,并将数据传输到其他各种存储系统。