如何监控

docker容器内的服务进程?

docker的缺点是, 把代码封装到一组容器中可能会导致缺乏可见性,容器变成了黑盒子并使得开发人员对容器内部的工作方式几乎不可见。为了能够更精确的分配每个容器能使用的资源,我们想要实时获取容器运行时使用资源的情况。

无论是传统的基础组件监控,还是应用性能监控的方式,都很难有效地监控 Docker。介绍一下现有的 Docker 相关监测 App 和服务,包括简单的开源工具,下面列举几种作为参考。

cAdvisor

谷歌的 container introspection 解决方案是 cAdvisor,这是一个 Docker 容器内封装的实用工具,能够搜集、集料、处理和导出运行中的容器的信息。通过它可以看到 CPU 的使用率、内存使用率、网络吞吐量以及磁盘空间利用率。

然后,你可以通过点击在网页顶部的 Docker Containers 链接,然后选择某个容器来详细了解它的使用情况。cAdvisor 部署和使用简单,但它只可以监视在同一个 host 上运行的容器,对多节点部署不是太管用。

Cloud Insight

在列举的几个监控Docker

容器服务平台中,这是一款国内产品。Cloud Insight 支持多种操作系统、

云主机、数据库和中间件的监控,原理是在平台服务仪表盘和自定义仪表盘中,采集并处理 Metric,对数据进行聚合与分组等计算,提供曲线图、柱状图等多样化的展现形式。优点是监控的指标很全,简单易用。

Scout

Scout 是一款监视服务,并不是一个独立的开源项目。它有大量的插件,除了 Docker 信息还可以吸收其他有关部署的数据。因此,Scout 算是一站式监控系统,无需对系统的各种资源来安装各种不同的监控系统。

Scout 的一个缺点是,它不显示有关每个主机上单独容器的详细信息。此外,每个监控的主机十美元,这样的价格也是是否选择 Scout 作为监控服务的考虑因素,如果运行一个有多台主机的超大部署,成本会比较高。

Sematext

Sematext 也是一款付费监控解决方案,计划收费方案是3.5美分/小时。同样也支持 Docker 监控,还包括对容器级事件的监测(停止、开始等等)和管理容器产生的日志。