Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比
在DockerCon EU 2015上,Brian Christner阐述了“Docker监控”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cAdvisor、“cAdvisor + InfluxDB + Grafana”以及Prometheus。
Christner所建议的最佳实践包括为容器添加标签并设置资源限制,他指出尽管Google的cAdvisor容器监控工具很易用,但是将cAdvisor、InfluxDB和Grafana组合起来能够提供更好的应用集成和可扩展性,Prometheus则提供了“开箱即用”的客户端库和告警。
Christner是Swisscom 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能够与InfluxDB和Grafana联合起来使用,它们分别是时间序列(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可能扩展起来不那么容易,但是它支持告警并提供了针对多种语言的客户端库。
图1:Docker监控工具的简要对比
Christner所做的“Docker监控”演讲的slide可以在SlideShare网站上找到,其他的消息可以通过brianchristner.io网站上的系列博客文章获取。
查看英文原文:Docker Monitoring: Best Practices, and a Comparison of the cAdvisor and Prometheus Monitoring Tools
本文转自: http://www.infoq.com/cn/news/2015/12/dockercon-docker-monitoring/
Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比的更多相关文章
- docker监控方案实践(cadvisor+influxdb+grafana)
一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 使用nodejs构建Docker image最佳实践
目录 简介 准备nodejs应用程序 创建Dockerfile文件 创建.dockerignore文件 创建docker image 运行docker程序 node的docker image需要注意的 ...
- Sentry Web 前端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Docker 开发最佳实践
Docker development best practices The following development patterns have proven to be helpful for p ...
- docker安全最佳实践概述
/************************************************* * Author : Samson * Date : 08/07/2015 * Test plat ...
- 【云计算】Docker监控相关资料
Cloud Insight 是东半球首款次世代系统监控工具:http://www.oneapm.com/ci/docker.html?utm_source=BaiduPaid&utm_medi ...
- 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)
一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...
- Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位.本文即基于最佳实践的 Metr ...
随机推荐
- (6)python基础数据类型
python的六大标准数据类型 (一)Number 数字类型(int float bool complex) (二)String 字符串类型 (三)List 列表类型 (四)Tuple 元组类型 ...
- vim文本编辑及文件查找应用4
linux系统上的特殊权限 : 特殊权限有:SUID,SGID,STICKY 安全上下文: 1.进程以其发起者的身份运行:进程对文件的访问权限,取决于发此进程的用户的权限:进程是发起些进程用户的代理, ...
- Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...
- 技术学到多厉害,才能顺利进入BAT?
简介 本科的时候对 Linux 特别感兴趣,心中向往成为一名运维工程师,就开始没日没夜的看相关的书籍,到了大约2013年前后的时候发现 DevOps 开始流行起来了,就开始学习 Python 希望成为 ...
- RAID 10是将RAID 1和RAID 0结合
RAID 10是将RAID 1和RAID 0结合,它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低.由于利用了RAID 0极高的 ...
- C# 委托、lambda表达式和事件 (7) 持续更新
引用方法 在C++,函数指针只不过是一个指向内存位置的指针,它不是类型安全的. C# 委托 定义了返回类型和参数的类型.委托类包含对方法的引用,还可以包含多个方法引用. 定义委托 public del ...
- barcode模块: plus.barcode.scan 进行扫描图片出现无法识别二维码,打印的错误信息是code:8,message:''
原因之一:图片的像素太大了,无法识别. 解决方法: 压缩一下图片. 这里的 data 我放了一个 像素为 4040 × 4040 的 图片. 进行识别的时候会报, (无法识别的图片,都是返回这些值) ...
- python之collections模块(OrderDict,defaultdict)
前言: import collections print([name for name in dir(collections) if not name.startswith("_" ...
- “景驰科技杯”2018年华南理工大学程序设计竞赛 A. 欧洲爆破(思维+期望+状压DP)
题目链接:https://www.nowcoder.com/acm/contest/94/A 题意:在一个二维平面上有 n 个炸弹,每个炸弹有一个坐标和爆炸半径,引爆它之后在其半径范围内的炸弹也会爆炸 ...
- 01_初识redis
1.redis和mysql mysql是一个软件,帮助开发者对一台机器的硬盘进行操作. redis是一个软件,帮助开发者对一台机器的内存进行操作 汽车之家,如果硬盘挂掉了,页面还能访问1个月 关键字: ...