几种 Docker 监控工具对比

轻量级虚拟化容器 Docker,自发布以来便广受业界关注,在开源界和企业界掀起了一阵风。Docker 容器相对于 VM 有如下几个优点:启动速度快;资源利用率高;性能开销小。html

几种 Docker 监控方法对比

从图中能够看出 Docker 和 虚拟机的差别,虚拟机的 Guest OS 和 Hypervisor 层在 Docker 中被 Docker Engine 层所替代,Docker 有着比虚拟机更少的抽象层。因为 Docker 不须要经过 Hypervisor 层实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用实际物理机的硬件资源。所以在 CPU、内存利用率上 Docker 略胜一筹。Docker利用的是宿主机的内核,而不须要 Guest OS,所以,当新建一个容器时,Docker 不须要和虚拟机同样从新加载一个操做系统内核,所以新建一个 Docker 容器只须要几秒钟。web

既然 Docker 这么火,那么问题来了,为了可以更精确的分配每一个容器能使用的资源,咱们想要实时获取容器运行时使用资源的状况,怎样对 Docker 上的应用进行监控呢?Docker 的结构会不会加大监控难度?docker

咱们都了解, container 至关于小型 host,能够说存在于 hosts 与应用之间的监控盲区,不管是传统的基础组件监控仍是应用性能监控的方式,都很难有效地监控 Docker。了解了一下现有的 Docker 相关监测 App 和服务,包括简单的开源工具和复杂的企业总体解决方案,下面列举几种Docker 监控工具做为参考:数据库

1. cAdvisor浏览器

谷歌的 container introspection 解决方案是 cAdvisor,这是一个 Docker 容器内封装的实用工具,可以搜集、集料、处理和导出运行中的容器的信息。经过它能够看到 CPU 的使用率、内存使用率、网络吞吐量以及磁盘空间利用率。而后,你能够经过点击在网页顶部的 Docker Containers 连接,而后选择某个容器来详细了解它的使用状况。cAdvisor 部署和使用简单,但它只能够监视在同一个 host 上运行的容器,对多节点部署不是太管用。网络

2. Cloud Insight架构

在咱们列举的几个监控 Docker 的服务或平台中,这是惟一一款国内产品。Cloud Insight 支持多种操做系统、云主机、数据库和中间件的监控,原理是在平台服务仪表盘和自定义仪表盘中,采集并处理 Metric,对数据进行聚合与分组等计算,提供曲线图、柱状图等多样化的展示形式。优势是监控的指标很全,简单易用,但目前正式版还未上线,能够期待一下。运维

3. Scoutjvm

Scout 是一款监视服务,并非一个独立的开源项目。它有大量的插件,除了 Docker 信息还能够吸取其余有关部署的数据。所以 Scout 算是一站式监控系统,无需对系统的各类资源来安装各类不一样的监控系统。 Scout 的一个缺点是,它不显示有关每一个主机上单独容器的详细信息。此外,每一个监控的主机十美圆这样略微昂贵的价格也是是否选择 Scout 做为监控服务的一个考虑因素,若是运行一个有多台主机的超大部署,成本会比较高。 微服务

4. Sematext

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

时间关系咱们选择了其中安装最简单的 Cloud Insight 来试验监控基于 Docker 的一个应用——Acme 的运行状况,后期时间容许会将其余几种监控方式都试一遍。

Docker 监控实战

单方面监控 Docker 可能并不太适合与业务挂钩的应用,当业务量上涨,不仅仅是 Docker 的负载上升,其余 JVM 指标也能也会出现上升的趋势。

咱们尝试使用一个支持比较多中间件、数据库、操做系统、容器的 Cloud Insight 来讲明这个实际的场景。

Cloud Insight

Cloud Insight 因为是一个 SaaS 监控方案,相对来讲它的安装和部署都比较简单。在此次监控实战中,咱们以 AcmeAir 为实验对象:一个能够模拟压力的电子商务类应用。

AcmeAir 是一款由原 IBM 新技术架构部资深工程师 Andrew Spyker,利用 Netflix 开源的 Netflix OSS 打造的开源电子商务应用。此应用具备以下特性:

  1. 模拟提供航班订票服务。用户能够经过移动设备或者 web 浏览器,完成新用户注册,用户登陆,航班查询,订票等操做。

  2. AcmeAir 融入了 Docker,微服务架构等理念。并采用 Tomcat、Node.js、WebSphere Application Server、WebSphere Extreme Scale、MongoDB、Cassandra 分别打造了不一样版本的实现。

  3. AcmeAir 利用 JMeter 模拟用户行为。可经过动态调整用户数量,模拟产生各类压力的事物流量。并可在应用中预先植入错误代码,模拟各类故障场景。该应用可作为压力测试,终端用户体验异常检测,故障诊断等各类测试场景的测试用例。

几种 Docker 监控方法对比

首先,咱们要打开 Cloud Insight 监控,还好 Cloud Insight 安装简单,一条命令便可。接着,咱们新建一个用于这次监控的仪表盘,依次将想要获取的指标通通添加进去。好比,选中 jvm.non_heap_memory 这个指标,选择按照 instance 分组。

咱们添加如下指标:

  • docker.cpu.user

  • docker.cpu.sysytem

  • docker.containers.running

  • jvm.heap_memory

  • jvm.non_heap_memory

  • jvm.gc.cms.count

  • jvm.heap_memory_max

  • jvm.gc.parnew.time

应用 Acme 部署在四台 servers 上,咱们开启四台 servers, 而后用 JMeter 给应用加压。随着时间 JMeter 不断给应用加压。

几种 Docker 监控方法对比

当 users 人数达到 188 时,咱们再来看一下仪表盘的视图。

几种 Docker 监控方法对比

从图中能够看到,性能数据发生了变化,根据 JMeter 里的数据,此时 CPU 占用超过了50%,错误率也有所提高;对比来看,根据 Cloud Insight 里的曲线显示,蓝色的线所表明的 Container CPU 占用率已经超过50%,逐渐接近75%,系统剩余的 CPU 资源逐渐降低,该 Container 的系统 CPU 资源消耗也忽然增大。咱们能够经过这些定位到 CPU 占用率太高的 Container ,及时而主动地去了解性能瓶颈,从而优化性能,合理分配资源。

Cloud Insight 所抓取的性能指标算是较为全面,部署和展示方式都是至关简单易懂的,对这个产品能够期待一下。

Cloud Insight 集监控、管理、计算、协做、可视化于一身,帮助全部 IT 公司,减小在系统监控上的人力和时间成本投入,让运维工做更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方博客

相关文章
相关标签/搜索