这一章节我们来比较监控容器的常用工具。将基于以下标准评估这些工具:
1、难易程度
2、监控指标的详细度
4、告警能力
5、监控目标多样性
6、成本
付费监控
1.1. Sematext
Sematext 是一款付费监控解决方案,计划收费方案是3.5美分/小时。同样也支持 Docker 监控,还包括对容器级事件的监测(停止、开始等等)和管理容器产生的日志。
1、难易程度 :较难
2、监控指标的详细度:一般
4、告警能力: 无
5、监控目标多样性:一般
6、成本:付费
1.2. Scout
Scout也是一款付费监控的解决方案,它能够从很多主机和容器中获得各项监测数据,并将数据呈现在有更长时间尺度的图标中。它也可以基于这些指标生成警报。它有 大量的插件,除了Docker信息他们可以吸收其他有关你的部署的数据。这使得Scout是你的一站式监控系统,而无需对系统的各种资源来安装各种不同的监控系统。
Scout的一个缺点是,它不显示有关每个主机上像CAdvisor的单独容器的详细信息并且每个监控的主机十美元。
1、难易程度 :容易
2、监控指标的详细度:一般
4、告警能力: 一般
5、监控目标多样性:一般
6、成本:付费
1.3. Data Dog
Data Dog同样也是一款付费监控的解决方案,Datadog 是 SaaS 监测工具,针对 DevOps 团队,从你的 app 或者其他各种工具获取数据并提供数据可视化功能。它把从你基础设备和软件采集的数据统一处理并存储。允许你创建仪表盘和搜索访问你提供的数据。他们目前提供数据的聚合和展示而不是提供数据分析。Datadog 尚未提供太多数据统计功能,做为一个监控软件,这些功能可能恰恰是你正在寻找的。他们还需要植入你的代码,这会产生代码依赖。
DataDog相比scout在某些功能上做了显著地改善,方便使用以及用户友好的设计。然而这一级别伴随着额外的成本,因为每个DataDog agent价格为十五美元。
1、难易程度 :容易
2、监控指标的详细度:较好
4、告警能力: 较好
5、监控目标多样性:一般
6、成本:付费
2.1. Docker Stats
想要查看容器统计信息只需运行docker stats [CONTAINER_NAME]。这样就可以查看每个容器的CPU利用率、内存的使用量以及可用内存总量。请注意,如果你没有限制容器内存,那么该命令将显示您的主机的内存总量。但它并不意味着你的每个容器都能访问那么多的内存。另外,还可以看到容器通过网络发送和接收的数据总量。
1、难易程度 :容易
2、监控指标的详细度:较好
4、告警能力: 无
5、监控目标多样性:无
6、成本:免费
2.2. CAdvisor
CAdvisor提供了docker stats命令所显示的数据的可视化界面,执行CAdvisor容器,并在浏览器里访问http://hostname:8080/可以看到CAdvisor的界面,将看到CPU的使用率、内存使用率、网络吞吐量以及磁盘空间利用率,可以通过点击在网页顶部的Docker Containers链接,然后选择某个容器来详细了解它的使用情况。
CAdvisor是一个易于设置并且非常有用的工具,不用非要SSH到服务器才能查看资源消耗,而且它还给我们生成了图表。此外,当集群需要额外的资 源时,压力表提供了快速预览。另外,它的资源消耗也比较低。但是,它有它的局限性,它 只能监控一个Docker主机。因此,如果你是多节点的话,就需要另外的组件对多主机的监控数据进行汇聚。
1、难易程度 :容易
2、监控指标的详细度:较好
4、告警能力: 无
5、监控目标多样性:无
6、成本:免费
2.3. Sensu
Scout和Datadog提供集中监控和报警系统,然而他们都是被托管的服务,大规模部署的话成本会很突出。要运行Sensu服务器可以使用容器。这个容器会安装sensu-server、uchiwa Web界面、Redis、rabbitmq-server以及sensu-api。不幸的是sensu不支持Docker。但是,使用插件系统,您可以配置支持容器指标以及状态检查。
Sensu支持我们所有的评价标准,你可以对我们Docker容器和主机收集尽可能多的细节。此外,你能够聚合所有主机的值到一个地方,并对这些检查发出 警报。这些警报并没有DataDog或Scout的先进,因为你仅能够提醒单独的主机上检查失败。然而,Sensu的大缺点是部署的难度。虽然我 已经使用Docker容器自动部署许多步骤,Sensu仍然是一个需要我们安装,启动和分开维护Redis、RabitMQ、Sensu API、uchiwa与Sensu Core的复杂系统。
1、难易程度 :难
2、监控指标的详细度:较好
4、告警能力: 一般
5、监控目标多样性:较好
6、成本:免费
2.4. Prometheus
Prometheus 由 SoundCloud 发明,适合于监控基于容器的基础架构。Prometheus 特点是高维度数据模型,时间序列是通过一个度量值名字和一套键值对识别。灵活的查询语言允许查询和绘制数据。它采用了先进的度量标准类型像汇总(summaries),从指定时间跨度的总数构建比率或者是在任何异常的时候报警并且没有任何依赖,中断期间使它成为一个可靠的系统进行调试。
如果你使用指标名字直接作为一个查询表达式,它将返回有这个使用这个指标名字作为标签的所有时间序列。使用 Prometheus 的查询语言,你可以对你想的任何维度的数据切片和切块。如果你对一个给定名字的所有容器感兴趣,你可以使用一个表达式像container_memory_usage_bytes{name="consul-server"} ,这个将仅仅显示name == "consul-server" 的时间序列。像多维度的数据模型,来实现数据聚合、分组、过滤,不单单是 Prometheus。OpenTSDB 和 InfluxDB 这些时间序列数据库和系统监控工具的结合,让系统监控这件事情变得更加的多元。
1、难易程度 :容易
2、监控指标的详细度:较好
4、告警能力: 较好
5、监控目标多样性:较好
6、成本:免费
Docker 的监控相比其他的数据库、系统、中间件监控,要复杂一些。由于需要表征不同 Container 的性能消耗,来了解不同应用的运行情况,所以数据的聚合、切片(分组)和过滤,在 Docker 监控中成为了必备功能。 除了监控Docker 以外,DCOS系统还需监控其他组件,如果一个工具在监控 Docker 同时能够监控其他组件,那就更好了,根据以上的对比,选择Prometheus与Cadvisor进行DCOS监控。
查看原文:http://www.zoues.com/index.php/2016/07/04/dcos-docker-monitor/