本文讲的是如何使用cAdvisor和Wavefront监控容器【编者的话】本文对容器的可视化做了一些研究与探讨,揭示了容器资源指标监控的重要性。

据说仅仅在过去一年里Docker的使用量就翻了一倍,那么对容器监控的需求越来越急迫也在情理之中。虽然使用容器带来了很多好处,但是它在帮助我们简化很多工作的同时也带了额外的粒度和依赖性管理。这就是为什么可视化运行态容器很重要的原因。

更令人惊讶的是,直到目前为止,仍然没有用来监控Docker容器资源指标的直观方法。

Docker 1.5中引入的Docker Stats API带来了从容器中输出资源指标(CPU和内存使用量)的能力。而且也有很多开源的项目致力于容器的监控,这其中就包括Google的 cAdvisor 。从cAdvisor这个项目的 GitHub 上可以了解到cAdvisor这个工具是:

一个收集、聚合、处理以及导出运行态容器相关信息的后台进程。它为每个容器保留了隔离资源的参数、历史资源使用量、所有历史资源用量的矩形图以及网络统计。这些数据是由容器以及服务器导出的。

运行cAdvisor

cAdvisor最棒的一点在于它运行起来非常简单。因为它本身就是运行在容器里,所以你可以像运行其他任何容器一样把它运行起来,运行的结果是可预知并且始终一致的。它也可以和一些在容器外的 storage driver 打包使用。当你指定了storage driver参数的时候,它会自动把资源指标导出到对应的storage driver上。比如,下面的命令会在任意一个Docker主机上创建一个cAdvisor实例,然后把资源指标导出到一个StatsD服务器上:

docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=statsd \
-storage_driver_host=your_statsd_host:8125 \
-storage_driver_db=docker001

在Wavefront中查看容器指标

最近,我们把之前用来做演示的服务以及相关功能整合到新的服务器上。当我们开始做这件事时,我们想要用Docker重新部署。通过把每个服务隔离在容器中,我们可以简化部署和扩展的流程。我们也能够用cAdvisor隔离每个容器的资源指标。当你在同一个主机上运行多个容器的时候,这就特别有用,和我们的情况一样。

通过上面的命令,cAdvisor就可以立即输出指标到StatsD服务器上。这些指标已下面的命令格式创建:

stats.gauges.<storage_driver_db>.<container name>.<metric name>

Storage_driver_db是你的Docker主机传送给cAdvisor的任意一个名字。在这个案例里,我们使用了 docker001

cAdvisor也提供存储相关的资源指标,但是当你有挂载的数据卷的时候,监控起来就很困难。

对比容器资源使用量

我们迁移的其中一个服务是Twitter流处理应用。这个Twitter流处理应用(下图中的“twittermentionstream”)只从少量support账户处理tweets。在Twitter流量高峰时间段时,它处理的tweets每秒也不到0.2个。但是,它在我们的容器中仍然是消耗CPU最多的:

在迁移后很短的时间内,我们给这个应用加了一些Twitter的账户。这让它每秒处理的tweets增加到超过8个,有40倍的增长。毫无意外地,这样地增长给资源用来带来了很大的影响。

只要运行cAdvisor就可以得到这些信息,无需其他操作。如果你用容器隔离应用,你可以很明显地从CPU、内存和吞吐量看出你的改变带来的影响。在这里我们只看了CPU,但是其他的资源指标都展现了类似的行为。

用容器指标规划产能

举个例子,当我们想给这个流处理应用增加更多Twitter账户时,我们可以从上面的图表里面知道这个应用每秒处理8个tweets时使用了服务器将近40%的CPU。因此,我们会想要评估一下CPU使用量和Tweet处理量之前的相关性。

上面的图表表明CPU使用量和Tweet处理量是线性相关的。通过这条线,我们可以预测在CPU使用量达到100%之前,这个服务器能够处理的tweets上限。

以前,发现数据之间的关系意味着手头要有比较准确的统计数字,甚至一些代码。在Wavefront里,只需要点两下鼠标就可以了。

结论

选用容器是大的趋势,我们从未看见这个趋势变缓。我们会继续评估容器可视化的趋势以及开发工作,然后以博客的形式发出来,因为越来越多的人在询问相关的事情。Google的cAdvisor提供了一个非常快速而且简单有效的方法来从容器获取资源指标到Wavefront。

原文链接:How to Monitor Containers with cAdvisor and Wavefront(翻译:Lambert Sun)

===========================================================
译者介绍

Lambert Sun,趋势科技DevOps Lead,敏捷开发实践者。

原文发布时间为:2016-06-19

本文作者:Lambert Sun

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:如何使用cAdvisor和Wavefront监控容器

如何使用cAdvisor和Wavefront监控容器相关推荐

  1. prometheus 结合cAdvisor、AlertManager、node-exporter、 监控容器并实现邮箱告警

    prometheus 结合cAdvisor.AlertManager.node-exporter. 监控容器并实现邮箱告警 prometheus 监控容器 rometheus是一款面向云原生应用程序的 ...

  2. 数据展示_使用Cadvisor监控容器并展示数据

    Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Pro ...

  3. c语言开发exporter,cadvisor node-exporter引发的容器文件系统泄漏

    问题 在2017年底,我们对自己的产品添加了监控功能,监控组件包括prometheus.grafana.cadvisor.node-exporter.监控功能集成进产品后,经过一段时间的使用,在卸载产 ...

  4. Prometheus监控容器并邮箱报警

    Prometheus监控容器并邮箱报警 在被监控的主机上拉取google/cadvisor官方镜像 [root@node1 ~]# docker pull google/cadvisor [root@ ...

  5. OpenShift Security (10) - 用红帽高级集安全产品监控容器中运行的安全违规操作

    <OpenShift 4.x HOL教程汇总> 本文已在 OpenShift 4.9 + RHACS 中测试验证. 演示视频 文章目录 场景说明 查看 Runtime 策略 部署测试应用 ...

  6. cadvisor+Prometheus实现监控

    host IP Docker1 192.168.10.11 Docker2 192.168.10.12 准备工作 1.清空防火墙(都要清空防火墙) [root@docker2 ~]# iptables ...

  7. Prometheus部署监控容器

    Prometheus架构描述 Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案 Prome ...

  8. (七) DockerUI与Shipyard以及InfluxDB+cAdvisor+Grafana配置监控...

    一.DockerUI 基于DockerAPI实现的镜像容器仓库管理 docker run -d -p 59000:9000 --privileged -v /var/run/docker.sock:/ ...

  9. cAdvisor+InfluxDB+Grafana 监控Docker

    容器的监控方案其实有很多,有docker自身的docker stats命令.有Scout.有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxD ...

最新文章

  1. .NET设计模式(16):模版方法(Template Method)
  2. 如何刪除GitHub中的repository
  3. java生成HMACSHA256的方法
  4. 在Linux下安装配置phpMyAdmin步骤
  5. 记录下kaggle比赛经验
  6. python bp神经网络 隐含层神经元数_【机器学习】python实现BP神经网络实战
  7. tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:)...
  8. python 通过逗号分割字符串_「Python 秘籍」使用多个界定符分割字符串
  9. 【Spring学习03】Spring简单入门实例
  10. dweep_极度好玩智力游戏
  11. 使用R语言进行时间序列(arima,指数平滑)分析
  12. 什么是邮箱个人签名?邮箱如何设置个人签名?
  13. Edge被恶意篡改主页
  14. 移动互联网时代的失意者
  15. 几个比较好看的几个颜色
  16. 熊猫头唱unravel——如何使图片人物表情动起来
  17. Android-Socket传输 GPRS网络
  18. alluxio java_学习 Alluxio(四):Java API
  19. 图解组策略配置禁止修改IE主页
  20. 刘润-商业洞察力-过去有效,现在无效,怎么办?

热门文章

  1. project02:阶段性总结
  2. Latex写创新作业
  3. vue实现二维码批量打印功能
  4. 阿里云RDS云数据库的使用
  5. 私有网段IP地址的划分
  6. EEG实验中Matlab打标方法及遇见问题
  7. Android Studio首次连接不上网易mumu模拟器解决办法
  8. UVM中超时退出set_timeout函数
  9. PC端自适应-rem
  10. 会声会影应该如何制作电影开幕效果