Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比

jopen 9年前
 

DockerCon EU 2015上, Brian Christner 阐述了“ Docker监控 ”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cAdvisor、“cAdvisor + InfluxDB + Grafana”以及Prometheus。

Christner所建议的最佳实践包括为容器添加标签并设置资源限制,他指出尽管Google的cAdvisor容器监控工具很易用,但是将 cAdvisor、InfluxDB和Grafana组合起来能够提供更好的应用集成和可扩展性,Prometheus则提供了“开箱即用”的客户端库和 告警。

ChristnerSwisscom AG 的云方案倡导者,在这个演讲中,他首先介绍了在Swisscom公司中 Docker 的使用情况,包括通过Docker和 Cloud Foundry (与 ClusterHQ 协作构建的)提供的持久化Database-as-a-Service(DBaaS),以及支撑各种应用的多个内部Docker产品,涵盖的范围从“云应 用到TV”。这些项目使用Docker的原因在于每个服务器上能够实现更高的应用密度(与此相关的就是成本的节省了),对于开发者来说能够减少上市的时 间,部署构件能够“一体适用(one size fits all)”于各种场景中。使用Docker的一个核心挑战在于监控方面的变化,从这里开始,Christner开始热情地分享他所学到的内容。

监控Docker的最佳实践包括通过描述性的键/值对 为容器添加标签(labelling container) ,如‘--label environment=”production”’,设置 资源限制 并限制所产生的告警数量,避免将信号变为噪音(“不要让自己过于警戒!”,Don’t overlert yourself!)。Christner简单介绍了“docker stats”命令,他说这个工具对于解决本地和远程的问题都非常有用。他讨论了 Docker stats API ,并补充说它通常来讲是所有其他Docker监控工具的基础,并且还可以将容器的资源信息提供到组织内部已有的监控方案中。

Google的 cAdvisor (Container Advisor)“为容器用户提供了了解运行时容器资源使用和性能特征的方法”。cAdvisor的容器抽象基于Google的 lmctfy 容器栈,因此原生支持Docker容器并能够“开箱即用”地支持其他的容器类型。cAdvisor部署为一个运行中的daemon,它会收集、聚集、处理 并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况的柱状图。

cAdvisor能够与 InfluxDBGrafana 联合起来使用,它们分别是时间序列(time series)的数据库和指标的仪表盘(metrics dashboard),借助它们来存储和展现信息。Christner还写过一篇“ 如何搭建Docker监控 ”的博客文章,并创建了与之关联的 Docker Compose 配置文件 ,它可以通过一个简单的“docker-compose up”命令就能创建使用cAdvisor、InfluxDB和Grafana的监控环境。

Prometheus 是一个实现监控功能的系统和服务,它来源于SoundCloud针对StatsD和Graphite所提供的 改善监控系统 。Prometheus能够按照给定的时间间隔收集所配置目标的指标、执行规则表达式、展现结果,如果某些条件判断结果为真的话,将会触发告警。Prometheus GitHub仓库的 README.md 这样说到,它与其他监控系统的主要区别特性在于多维的数据模型,借助这种多维性所提供的灵活查询语言,支持多种模式的图形和仪表盘,并且支持垂直和水平的 组合(hierarchical and horizontal federation)。通过一个Docker Compose配置文件就能建立全功能的Prometheus监控环境,这个文件可以在Christner的 GitHub账号 上找到。

Christner在演讲的最后比较了上述三种容器监控方式,即cAdvisor、“cAdvisor + InfluxDB + Grafana”和Prometheus。尽管cAdvisor最易用,但它在扩展性和告警方面有局限性。组合使用“cAdvisor + InfluxDB + Grafana”能够提供很好的可扩展性,并且提供了客户端库,但是内置不支持告警功能。Prometheus可能扩展起来不那么容易,但是它支持告警并 提供了针对多种语言的客户端库。

Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比

图1:Docker监控工具的简要对比

Christner所做的“ Docker监控 ”演讲的slide可以在SlideShare网站上找到,其他的消息可以通过 brianchristner.io 网站上的系列 博客文章 获取。

查看英文原文: Docker Monitoring: Best Practices, and a Comparison of the cAdvisor and Prometheus Monitoring Tools