过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减。另一方面,大家的注意力也渐渐从 “Docker 是什么”转移到“实践 Docker”与“监控 Docker”上。
本文转自刘斌博文「如何选择 Docker 监控方案 」,文中刘斌从技术的角度深入解释了 Docker 监控的数据采集原理,介绍了现有开源的监控方案,以及能 够对 Docker 进行监控功能的主流 SaaS 服务工具。
上一篇文章中,我们了解了开源的 Docker 监控方案,本篇听听斌哥介绍 Docker 监控的 SaaS 解决方案!!
##SaaS
- turnkey解决方案
- 维护成本 ~ Zero
- 适合中小企业
对于中小型企业尤其创业公司来说,自主开发或者直接利用现有的开源工具进行监控都有一些问题,主要是成本和风险的问题。对于中小企业,应该先把精力集中在发展核心业务,能外包的就先不自己做。而且很多中小公司大家都是全栈,没有专门的运维人员,都是临时抱佛脚,随时都会变成救火队员。
SaaS最大的优点是什么?那就是免运维,开箱即用,修改的代码少甚至不需要修改代码,或者只需要简单的安装一个agent就可以工作了。很多SaaS软件的开场白都是运行一条 yum install
,然后倒上一杯咖啡等几分钟,就能看到数据了。
你的初期投入非常小,上手非常快,而且成本比较低(如果你的公司已经有数百上千服务器了,则这部分成本可能会变高,就跟是自建机房还是用云主机的对比一样)。
传统APM一般也都提供了对Docker的监控:
- New Relic
- AppDynamics
- Dynatrace(Ruxit)
最近也有很多专门用于基础设施监控的SaaS服务
- Datadog
- SysDig
- Cloud Insight
- clusterup
- Scout
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
- 免费工具
- 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
- 支持报警
- 预测功能
作为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 官方博客
来源:oschina
链接:https://my.oschina.net/u/2365986/blog/672864