过去的一年中,关于 Docker 的话题从未断过,而现在,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减。另外一方面,你们的注意力也渐渐从 “Docker 是什么”转移到“实践 Docker”与“监控 Docker”上。html
本文转自刘斌博文「如何选择 Docker 监控方案 」,文中刘斌从技术的角度深刻解释了 Docker 监控的数据采集原理,介绍了现有开源的监控方案,以及能 够对 Docker 进行监控功能的主流 SaaS 服务工具。linux
上一篇文章中,咱们了解了开源的 Docker 监控方案,本篇听听斌哥介绍 Docker 监控的 SaaS 解决方案!!ios
##SaaSweb
对于中小型企业尤为创业公司来讲,自主开发或者直接利用现有的开源工具进行监控都有一些问题,主要是成本和风险的问题。对于中小企业,应该先把精力集中在发展核心业务,能外包的就先不本身作。并且不少中小公司你们都是全栈,没有专门的运维人员,都是临时抱佛脚,随时都会变成救火队员。算法
SaaS最大的优势是什么?那就是免运维,开箱即用,修改的代码少甚至不须要修改代码,或者只须要简单的安装一个agent就能够工做了。不少SaaS软件的开场白都是运行一条 yum install
,而后倒上一杯咖啡等几分钟,就能看到数据了。docker
你的初期投入很是小,上手很是快,并且成本比较低(若是你的公司已经有数百上千服务器了,则这部分红本可能会变高,就跟是自建机房仍是用云主机的对比同样)。后端
传统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快钱。这只是官方订价,实际上还会便宜,貌似联系客服就能够知道有多便宜了。
Cloud Insight的图表功能也很丰富,能对任何指标以图表的方式展现,还能在图表上叠加事件,好比报警通知、服务启动中止等,能在观察到metric变更趋势的同时,看到相应的时间,了解metric发生变更的缘由。好比CPU load超过必定值时,可能触发报警,这时你能在图表上看到相应的事件,一样,若是CPU load一直不是很低,可是从某一时间点开始变低了,你可能也能从一次新的代码部署中了解缘由。
Cloud Insight还支持ChatOps集成,包括国内的 BearyChat 和简聊。随着devops文化的普及,相信这些工具的重要性也会与日俱增。不过貌似简聊已经开源了(不运营了?)。
##Sysdig
能够认为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,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,真的对解决人力和时间成本上有很是大的帮助。
##拓扑可视化 跨组件、跨基础设施和应用,自动识别组件以及组件之间的依赖关系,以帮助更好的发现问题和解决问题。
这类服务有:
-- 全文完 --
更多 Docker 监控内容,请关注 OneAPM Blog_Cloud Insight 版块。数据监控及管理平台 Cloud Insight,让数据监控及可视化更容易。
本文转自 OneAPM 官方博客