文档章节

Docker 监控- Prometheus VS Cloud Insight

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2015/12/02 10:36
字数 1560
阅读 387
收藏 1

如今,越来越多的公司开始使用 Docker 了,2 / 3 的公司在尝试了 Docker 后最终使用了它。为了能够更精确的分配每个容器能使用的资源,我们想要实时获取容器运行时使用资源的情况,怎样对 Docker 上的应用进行监控呢?Docker 的结构会不会加大监控难度?

可是在没有专业运维团队来监控 Docker 的情况下,并且还想加快 Docker 监控的日程,怎么办呢?

我们通过调查了解到几种不错的 Docker 监控方法,其中 Prometheus 和 Cloud Insight 让人很感兴趣。

Prometheis

先来说说一套开源的 Docker 监控方案:Prometheus;而此篇文字的原文地址:Monitor Docker Containers with Prometheus

Prometheus 由 SoundCloud 发明,适合于监控基于容器的基础架构。Prometheus 特点是高维度数据模型,时间序列是通过一个度量值名字和一套键值对识别。灵活的查询语言允许查询和绘制数据。它采用了先进的度量标准类型像汇总(summaries),从指定时间跨度的总数构建比率或者是在任何异常的时候报警并且没有任何依赖,中断期间使它成为一个可靠的系统进行调试。

Prometheus 支持维度数据,你可以拥有全局和简单的指标名像 container_memory_usage_bytes ,使用多个维度来标识你服务的指定实例。

我已经创建了一个简单的 container-exporter 来收集 Docker 容器的指标以及输出给 Prometheus 来消费。这个输出器使用容器的名字,id 和 镜像作为维度。额外的 per-exporter 维度可以在 prometheus.conf 中设置。

如果你使用指标名字直接作为一个查询表达式,它将返回有这个使用这个指标名字作为标签的所有时间序列。

container_memory_usage_bytes{env="prod",id="23f731ee29ae12fef1ef6726e2fce60e5e37342ee9e35cb47e3c7a24422f9e88",instance="http://1.2.3.4:9088/metrics",job="container-exporter",name="haproxy-exporter-int",image="prom/haproxy-exporter:latest"} 11468800.000000

container_memory_usage_bytes{env="prod",id="57690ddfd3bb954d59b2d9dcd7379b308fbe999bce057951aa3d45211c0b5f8c",instance="http://1.2.3.5:9088/metrics",job="container-exporter",name="haproxy-exporter",image="prom/haproxy-exporter:latest"} 16809984.000000

container_memory_usage_bytes{env="prod",id="907ac267ebb3299af08a276e4ea6fd7bf3cb26632889d9394900adc832a302b4",instance="http://1.2.3.2:9088/metrics",job="container-exporter",name="node-exporter",image="prom/container-exporter:latest"} ... ... 如果你运行了许多容器,这个看起来像这样:

Docker 监控- Prometheus VS Cloud Insight

为了帮助你使得这数据更有意义,你可以过滤(filter) and/or 聚合(aggregate) 这些指标。

使用 Prometheus 的查询语言,你可以对你想的任何维度的数据切片和切块。如果你对一个给定名字的所有容器感兴趣,你可以使用一个表达式像 container_memory_usage_bytes{name="consul-server"},这个将仅仅显示 name == "consul-server" 的时间序列。

像多维度的数据模型,来实现数据聚合、分组、过滤,不单单是 Prometheus。OpenTSDB 和 InfluxDB 这些时间序列数据库和系统监控工具的结合,让系统监控这件事情变得更加的多元。

接下来,我们为大家介绍国内一家同样提供该功能的监控方案:Cloud Insight。有关其数据聚合的功能可以阅读:数据聚合 & 分组:新一代系统监控的核心功能

现在我们来对比 Prometheus 和 Cloud Insight 在数据聚合、分组(切片)上的展现效果和功能。

###数据聚合

根据不同的 Container Name 或 Image Name 对内存使用量或 Memeory Cache 进行聚合。

Docker 监控- Prometheus VS Cloud Insight

###数据分组(切片)

根据不同的 Container Name 或 Image Name 对内存使用量或 Memeory Cache进行分组(切片)。

Docker 监控- Prometheus VS Cloud Insight

Cloud Insight

Cloud Insight 支持多种操作系统、云主机、数据库和中间件的监控,原理是在平台服务仪表盘和自定义仪表盘中,采集并处理 Metric,对数据进行聚合与分组等计算,提供曲线图、柱状图等多样化的展现形式。优点是监控的指标很全,简单易用,也可以期待一下。

Cloud Insight 监控 Docker 试验

我们用 AcmeAir 作为试验的应用,AcmeAir 是一款由原 IBM 新技术架构部资深工程师 Andrew Spyker,利用 Netflix 开源的 Netflix OSS 打造的开源电子商务应用。

首先,我们要打开 Cloud Insight 监控,还好 Cloud Insight 安装简单,一条命令即可。接着,我们新建一个用于此次监控的仪表盘,依次将想要获取的指标统统添加进去。

我们添加了以下指标:

  • docker.cpu.user
  • docker.cpu.sysytem
  • docker.containers.running
  • jvm.heap_memory
  • jvm.non_heap_memory
  • jvm.gc.cms.count
  • jvm.heap_memory_max
  • jvm.gc.parnew.time

应用 Acme 部署在四台 servers 上,我们开启四台 servers, 然后用 JMeter 给应用加压。

Docker 监控- Prometheus VS Cloud Insight

随着时间 JMeter 不断给应用加压,当 users 人数达到188时,我们再来看一下仪表盘的视图。

Docker 监控- Prometheus VS Cloud Insight

从图中可以看到,性能数据发生了变化,根据 JMeter 里的数据,此时 CPU 占用超过了50%,错误率也有所提升;对比来看,根据 Cloud Insight 里的曲线显示,蓝色的线所代表的 Container CPU 占用率已经超过50%,逐渐接近75%,系统剩余的 CPU 资源逐渐下降,该 Container 的系统 CPU 资源消耗也突然增大。我们可以通过这些定位到 CPU 占用率过高的 Container ,及时而主动地去了解性能瓶颈,从而优化性能,合理分配资源。Cloud Insight 所抓取的性能指标算是较为全面,部署和展现方式都是相当简单易懂的。

总结

Docker 兼容相比其他的数据库、系统、中间件监控,要复杂一些。由于需要表征不同 Container 的性能消耗,来了解不同应用的运行情况,所以数据的聚合、切片(分组)和过滤,在 Docker 监控中成为了必备功能。

所以我们推荐使用了时间序列数据库,或者类似设计逻辑的监控方案,如:Prometheus 和 Cloud Insight。

而 Docker 单方面的监控,可能不太满足一些大型公司的需求,如果一个工具在监控 Docker 同时能够监控其他组件,那就更好了。

国外出现了 Graphite、Grafana 和 Host Graphite,能够让用户将不同数据来源都集中在同一个地方进行展现;而国内 Cloud Insight 似乎也是这样的思路。

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
Docker 监控实战

如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内。 越大...

OneAPM蓝海讯通
2015/11/27
105
0
Docker 监控之 SaaS 解决方案

过去的一年中,关于 [Docker][1] 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减。另一方面,大家的注意力也渐渐从...

OneAPM蓝海讯通
2016/05/10
50
0
用 OneAPM Cloud Insight 监控 Docker 性能

Docker 是构建和部署软件的一个新兴的轻量级的平台,也是一个减轻替代虚拟机的容器。Docker 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案。 和...

OneAPM蓝海讯通
2015/10/19
50
1
斌哥的 Docker 进阶指南—监控方案的实现

过去的一年中,关于 [Docker][1] 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减。另一方面,大家的注意力也渐渐从...

OneAPM蓝海讯通
2016/05/04
122
0
容器监控知多少 (3) Prometheus

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。上一篇介绍了Google开发的容器监控工具cAdvisor,但是其提供的操作界面较为简陋,且不支持监...

Edison Zhou
2019/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql中int(11)的列大小是多少?

mysql中int(11)的列大小是多少? 以及可以在此列中存储的最大值? #1楼 mysql中int(11)的列大小是多少? (11) int数据类型的此属性与列的大小无关。 它只是整数数据类型的显示宽度。 从11....

技术盛宴
31分钟前
37
0
聊聊artemis消息的推拉模式

序 本文主要研究一下artemis消息的推拉模式 拉模式 receive activemq-artemis-2.11.0/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.......

go4it
41分钟前
39
0
vue 全局前置守卫引起死循环的原因与解决方法

我们经常会用到全局前置守卫,如判断用户有没有登陆过,如果登陆过就直接跳到目的页面,如果没有登陆过,就跳转到登陆页。 先看官网对全局前置守卫的介绍 使用 router.beforeEach 注册一个全...

tianyawhl
52分钟前
31
0
如何按索引从std :: vector <>擦除元素?

我有一个std :: vector <int>,我想删除第n个元素。 我怎么做? std::vector<int> vec;vec.push_back(6);vec.push_back(-17);vec.push_back(12);vec.erase(???); #1楼 erase方法将以两......

javail
今天
43
0
使用生成器模拟时间分片

对于cpu密集型任务, 时间分片可以有效减少页面卡顿, 不过对于纯计算型任务还是推荐使用worker在后台做计算 效果图, 计算密集型任务被分到每次只执行16ms, 每次执行完毕留给浏览器时间去响应事...

阿豪boy
今天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部