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可能扩展起来不那么容易,但是它支持告警并提供了针对多种语言的客户端库。

图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监控工具的对比的更多相关文章

  1. docker监控方案实践(cadvisor+influxdb+grafana)

    一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...

  2. Sentry 后端监控 - 最佳实践(官方教程)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  3. 使用nodejs构建Docker image最佳实践

    目录 简介 准备nodejs应用程序 创建Dockerfile文件 创建.dockerignore文件 创建docker image 运行docker程序 node的docker image需要注意的 ...

  4. Sentry Web 前端监控 - 最佳实践(官方教程)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  5. Docker 开发最佳实践

    Docker development best practices The following development patterns have proven to be helpful for p ...

  6. docker安全最佳实践概述

    /************************************************* * Author : Samson * Date : 08/07/2015 * Test plat ...

  7. 【云计算】Docker监控相关资料

    Cloud Insight 是东半球首款次世代系统监控工具:http://www.oneapm.com/ci/docker.html?utm_source=BaiduPaid&utm_medi ...

  8. 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)

    一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...

  9. Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!

    Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位.本文即基于最佳实践的 Metr ...

随机推荐

  1. (6)python基础数据类型

    python的六大标准数据类型 (一)Number   数字类型(int float bool complex) (二)String 字符串类型 (三)List 列表类型 (四)Tuple 元组类型 ...

  2. vim文本编辑及文件查找应用4

    linux系统上的特殊权限 : 特殊权限有:SUID,SGID,STICKY 安全上下文: 1.进程以其发起者的身份运行:进程对文件的访问权限,取决于发此进程的用户的权限:进程是发起些进程用户的代理, ...

  3. Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...

  4. 技术学到多厉害,才能顺利进入BAT?

    简介 本科的时候对 Linux 特别感兴趣,心中向往成为一名运维工程师,就开始没日没夜的看相关的书籍,到了大约2013年前后的时候发现 DevOps 开始流行起来了,就开始学习 Python 希望成为 ...

  5. RAID 10是将RAID 1和RAID 0结合

    RAID 10是将RAID 1和RAID 0结合,它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低.由于利用了RAID 0极高的 ...

  6. C# 委托、lambda表达式和事件 (7) 持续更新

    引用方法 在C++,函数指针只不过是一个指向内存位置的指针,它不是类型安全的. C# 委托 定义了返回类型和参数的类型.委托类包含对方法的引用,还可以包含多个方法引用. 定义委托 public del ...

  7. barcode模块: plus.barcode.scan 进行扫描图片出现无法识别二维码,打印的错误信息是code:8,message:''

    原因之一:图片的像素太大了,无法识别. 解决方法: 压缩一下图片. 这里的 data 我放了一个  像素为 4040 × 4040 的 图片. 进行识别的时候会报, (无法识别的图片,都是返回这些值) ...

  8. python之collections模块(OrderDict,defaultdict)

    前言: import collections print([name for name in dir(collections) if not name.startswith("_" ...

  9. “景驰科技杯”2018年华南理工大学程序设计竞赛 A. 欧洲爆破(思维+期望+状压DP)

    题目链接:https://www.nowcoder.com/acm/contest/94/A 题意:在一个二维平面上有 n 个炸弹,每个炸弹有一个坐标和爆炸半径,引爆它之后在其半径范围内的炸弹也会爆炸 ...

  10. 01_初识redis

    1.redis和mysql mysql是一个软件,帮助开发者对一台机器的硬盘进行操作. redis是一个软件,帮助开发者对一台机器的内存进行操作 汽车之家,如果硬盘挂掉了,页面还能访问1个月 关键字: ...