Docker 监控之 SaaS 解决方案

过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减。另一方面,大家的注意力也渐渐从 “Docker 是什么”转移到“实践 Docker”与“监控 Docker”上。

本文转自刘斌博文「如何选择 Docker 监控方案 」,文中刘斌从技术的角度深入解释了 Docker 监控的数据采集原理,介绍了现有开源的监控方案,以及能 够对 Docker 进行监控功能的主流 SaaS 服务工具。

上一篇文章中,我们了解了开源的 Docker 监控方案,本篇听听斌哥介绍 Docker 监控的 SaaS 解决方案!!

SaaS

  • turnkey解决方案
  • 维护成本 ~ Zero
  • 适合中小企业

对于中小型企业尤其创业公司来说,自主开发或者直接利用现有的开源工具进行监控都有一些问题,主要是成本和风险的问题。对于中小企业,应该先把精力集中在发展核心业务,能外包的就先不自己做。而且很多中小公司大家都是全栈,没有专门的运维人员,都是临时抱佛脚,随时都会变成救火队员。

SaaS最大的优点是什么?那就是免运维,开箱即用,修改的代码少甚至不需要修改代码,或者只需要简单的安装一个agent就可以工作了。很多SaaS软件的开场白都是运行一条 yum install ,然后倒上一杯咖啡等几分钟,就能看到数据了。

你的初期投入非常小,上手非常快,而且成本比较低(如果你的公司已经有数百上千服务器了,则这部分成本可能会变高,就跟是自建机房还是用云主机的对比一样)。

传统APM一般也都提供了对Docker的监控:

最近也有很多专门用于基础设施监控的SaaS服务

RancherLab公司有人写了篇文章,大家可以参考下。这篇文章名为《Comparing Seven Monitoring Options for Docker》,即对比了七种不同的监控Docker的方案,包括使用 docker stats 命令, cAdvisor, Prometheus ,Sensu,以及saas服务 Scout, Sysdig Cloud and DataDog等方案,作为结论作者觉得Datadog是这其中最优秀的方案。

RancherLab有一个产品叫RancheOS,是一个专门为了运行Docker准备的微型Linux版本,它的口号是“The perfect place to run Docker”。跟CoreOS类似,但是貌似功能不如CoreOS多,也没有CoreOS有名,也没有CoreOS中fleet、flannel和etcd这样的组件,尤其是etcd,可以说是CoreOS的副产品,但是几乎成了Docker业界标准的kv store和服务发现组件了。

Datadog

  • 国外最好
  • 功能很强大
  • 安装很简单

国外最流行的SaaS解决方案是Datadog,国内可能比较成熟、规模较大的应该算是Cloud Insight了。这类服务用户只需要注册一个账号,按照安装过程通过一条命令来安装探针即可在web展示端看到数据。

要说到Datadog的不足,那就是在国外,网络延迟需要考虑,万一哪天不科学了也需要有所准备。价格方面Datadog也比较贵。免费plan支持5台机器,而且只保留一天的数据,而且没有报警功能。收费版15美元一台主机,支持报警功能,数据存储13个月。

说道SaaS,不得不提客服,直接面对非母语客服人员交流起来肯定会有诸多不顺吧。

Cloud Insight

  • 实时数据
  • 历史数据
  • 仪表盘
  • 混合监控
  • 报警功能

当然,最便宜的还是Cloud Insight,有多便宜呢,官方定价的话3个探针以下是免费的,支持超过3台主机的话,平均每天1快钱。这只是官方定价,实际上还会便宜,貌似联系客服就可以知道有多便宜了。

Docker 监控之 SaaS 解决方案

Docker 监控之 SaaS 解决方案

Cloud Insight的图表功能也很丰富,能对任何指标以图表的方式展示,还能在图表上叠加事件,比如报警通知、服务启动停止等,能在观察到metric变动趋势的同时,看到相应的时间,了解metric发生变动的原因。比如CPU load超过一定值时,可能触发报警,这时你能在图表上看到相应的事件,同样,如果CPU load一直不是很低,但是从某一时间点开始变低了,你可能也能从一次新的代码部署中了解原因。

Cloud Insight还支持ChatOps集成,包括国内的 BearyChat 和简聊。随着devops文化的普及,相信这些工具的重要性也会与日俱增。不过貌似简聊已经开源了(不运营了?)。

Sysdig

  • 免费工具
  • SaaS服务 Sysdig Cloud
  • 拓扑可视化

可以认为sysdig是strace + tcpdump + htop + iftop + lsof + 众多linux常用的系统监控命令的合体。

如果你熟悉tcpdump,那么你知道它能还原整个网络流量,而sysdig则是操作系统级别的监控工具,能捕捉到所有OS事件和数据。而且sysdig原生支持Linux container,包括Docker和LXC,提供了基本的指标监控信息。除了性能指标,sysdig还能采集trace等日志信息,用于以后的问题分析和解决。

Sysdig Cloud是sisdig的SaaS版,除了基本的单机sysdig功能之外,还提供了跨平台跨基础设施的组件间依赖关系的可视化。

Librato

  • 数据聚合平台
  • 简单探针
  • 图表和报警
  • 价格不贵

Librato是一个数据聚合平台,而不是严格意义的监控系统。

Librato很容易从AWS CloudWatch和Heroku获得数据,如果是自己监控主机或者Docker,需要使用Collectd框架。它也有很多插件,可以从StatsD、Riemann等数据源采集数据。

Librato的探针虽然功能不是强大,但是他提供了丰富的实时在线数据处理功能,用户可以使用DSL对任意时间序列数据组合进行数学运算,比如加减乘除、比率导数等。还支持和时间窗口滑动功能,即跟过去某一段时间进行比较。

Librato也支持报警,基于metric和条件,设置报警信息。

Librato是按照metric的个数和时间分辨率来收费的,在官网的主页上有一个大概的估算,如果你有20个metric,并且时间间隔为60秒,则一台服务器的价格只有2美元1个月,这比datadog要便宜。

Axibase(ATSD)

  • 非开源TSDB
  • 支持报警
  • 预测功能

Docker 监控之 SaaS 解决方案

作为TSDB,ATSD支持长时间存储高精度的metric数据。ATSD支持多种数据采集工具和协议,比如tcollector, Collectd,当然ATSD也支持从多台Docker主机手机指标数据,并长期保存,进行可视化和分析。

除了传统的时间序列数据,ATSD还支持属性(Properties)和消息这两种类型的数据。属性一般用于保存meta data,这有点类似标签。和OpenTSDB一样,ATSD也支持tag,我们可以使用这些tag进行过滤和聚合。

ATSD内置了自动回归推断算法(holt-winters,arima),可以提早预测故障。预测功能的准确性取决于数据的采集频率,保存时间(也就是数据量大小)和算法。

最大的遗憾,就是ATSD不是开源,也不是免费的软件,不过他们提供了一个社区版可以免费使用,但是你只能在一个节点上安装ATSD,而且不能用于盈利性服务,也不能对软件进行修改以及再发布。

如果我们只是评估一下,或者想自己构建监控方案,它的产品设计还是非常值得我们来借鉴一下。

SaaS的挑战

数据敏感性

采用SaaS,意味着你的数据都将会保存到公网,可能会带来心理不安全感。实际上SaaS反而会更安全些,尤其是对中小公司没有专门的安全运维团队的情况下。

成本(迁移和使用成本)

一般来说这是一个一次性投入成本。而对于大公司来说,就像公有云一样,成本可能会成为问题。

内部抵抗(观念、个人爱好)

来自技术人员自身的抵抗,不是每个人都喜欢自己变得轻松,使用SaaS可能会给一些人带来工作上的不充实感。

Docker监控方案的发展趋势

标签机制

一种观点:监控服务状态胜过监控个别容器,通过tag机制对服务整体的性能指标进行聚合。

Tag可以是任何维度,比如BU,地区,服务,甚至个别容器。

比如Docker和Kubernetes等都支持label机制,即tag机制。

启动Daemon:

docker daemon –label com.example.group=“webserver”

启动容器:

docker run –label com.example.group=“webserver”

Dockerfile:

LABEL com.example.group=“webserver”

通过API打通

通过API化实现共赢。开源软件比如fluentd、Collectd等,都支持插件功能。包括Docker本身,也在1.11版本中,采用了runC作为容器运行时,在上面通过containerD来统一控制,来支持符合OCI标准的容器。

Total解决方案

包括从探针到展示、告警,就是现在类似Datadog和Cloud Insight这样的产品,以及支持中间件的详细程度,就像一个大市场,什么都能买到,不管你用什么软件,平台都能提供监控。

这就像是去了酒吧突然想吃碗拉面,然后竟然酒吧能给你做出来的那种感觉。

另一个层面就是从RUEM(实时用户体验管理)到基础设施层的 打通 。比如你看到某URL的用户HTTP响应较慢,如果不能跟后端的APM打通,你尽管能识别出问题,但是你不知道如何解决。如果和后端的APM以及基础设施监控打通,你就能定位到HTTP响应慢时,相应的后端代码的位置,并根据后端代码的位置从而进一步找到MySQL的监控数据以及系统异常事件,立刻知道问题的根本原因所在并解决问题,可以说效率应该能提高几个数量级。

系统监控工具如果能够做到 All in One,真的对解决人力和时间成本上有非常大的帮助。

拓扑可视化

跨组件、跨基础设施和应用,自动识别组件以及组件之间的依赖关系,以帮助更好的发现问题和解决问题。

这类服务有:

  • Weave Scope
  • Ruxit
  • Sysdig

-- 全文完 --


更多 Docker 监控内容,请关注 OneAPM Blog_Cloud Insight 版块。数据监控及管理平台 Cloud Insight,让数据监控及可视化更容易。

本文转自 OneAPM 官方博客

posted @ 2016-05-10 15:43  OneAPM官方技术博客  阅读(2124)  评论(0编辑  收藏  举报
OneAPM - 端到端的应用性能管理云解决方案! | OneAPM博客