云智慧还曾获得由宽带资本领投,1、Docker监控概

【干货】解密监控宝Docker监控实现原理

分享人高驰涛(Neeke),云智慧高级架构师,PHP 开发组成员,同时也是 PECL/SeasLog 的作者。8 年研发管理经验,早期从事大规模企业信息化研发架构,09 年涉足互联网数字营销领域并深入研究架构与性能优化。2014 年加入云智慧,致力于 APM 产品的架构与研发。崇尚敏捷,高效,GettingReal。

图片 1

2015年9月,企业级应用性能监控和管理服务商云智慧正式上线了Docker监控功能,能够实时监控Docker容器的CPU、内存、网络流量及Swap状态,让开发者和运维人员在使用Docker时清晰掌握其资源消耗状况。

图片 2

作为国内首家实现Docker监控的SaaS厂商,监控宝Docker监控的技术原理是什么?相对国外的Docker监控产品有何优势?以下是此次分享的实录,请听Neeke细说端详:

1、Docker监控概况

在云时代,仍有大量物理机直接支持服务,相较于虚拟技术来讲,这种方式已经落伍很多,于是各种开源容器技术大大推进了虚拟化技术的发展。

Docker容器相较于其他容器技术来讲,是比较新的,而且发展最为迅速。原因不用多说,背后有老大哥谷歌撑腰。国内也已经兴起了几个以Docker为核心技术的创业公司,比如云智慧的合作伙伴数人、DaoCloud,都是前景非常赞的公司。

虽然这么火热,但关于Docker的运维一直是个痛点。

可以说,目前全球只有两家APM厂商提供了基于SaaS的Docker运维监控,其一是美国APM厂商New Relic,他们在6月下旬正式发布了Docker监控;另一家,则是中国APM厂商云智慧CloudWise,在继New Relic之后的9月7日,发布上线了Docker监控。从某种意义上讲,CloudWise填补了国内Docker监控的SaaS服务空白。

2、Docker监控的工作原理

大家都知道,CloudWise在APM领域率先提出了端到端的一体化监控模型,并且在此模型上,发布了技术领先、便于部署和管理的SmartAgent软件架构。此次Docker监控的实现,也是基于SmartAgent的架构来完成的。

SmartAgent以部署的快捷高效和智能化见长,整个部署过程中,用户在两分钟内便可完成。部署分为两部,首先下载、解压、启动数据发送代理SendProxy。SendProxy的作用是提供一个高效的本地数据接收队列与数据发送引擎,并且可以在局域网内进行分布式部署,使得不能上网的机器监控也可正常地通过SendProxy高效地传输到云智慧的SaaS平台。其次,下载、解压、启动DockerAgent。

DockerAgent使用Python进行开发并完成编译,目前支持Ubuntu和CentOS。DockerAgent遵循了SmartAgent的插件规范,所以,无论监控宝或透视宝用户,都可以直接使用。

DockerAgent有三个线程,分别是:DockerProcess DockerConfig DockerPing,以及一个对象Task。三个线程各司其职,同时受Task对象控制。Task中核心属性是任务惟一标识、任务状态以及任务频率。这些属性由DockerConfig与ClouwWise云平台定时同步。

当任务状态正常时,DockerProcess线程开始采集数据,并遵守频率规范。DockerPing负责心跳检测,定时产生心跳数据。这些数据,都由DockerAgent交由SendProxy,并由SendProxy存储进入队列,并异步地推送至CloudWise云平台。

前面聊到DockerAgent插件遵守了SmartAgent的插件规范,所以它像其他插件一样,包含了 bin 、conf、lib、log等目录,并存在一个启动脚本。该脚本提供了start 、stop、status等命令。

以上是DockerAgent的介绍,后续SmartAgent的架构与插件规范将会陆续开源发布,届时热衷开源与监控的同学,都可以直接参与进来。3、DockerAgent数据采集原理

下面我们聊一下DockerAgent采集数据的原理。DockerAgent首先会使用docker info命令来获取docker系统信息,这些信息包含了非常有用的数据,如: Containers, Images, Name, CPUs, Data Space Used, Data Space Total, Total Memory。

这些数据看似简单基础,但却可以解脱掉Docker运维同学每天重复N次的工作。其次会使用docker version来检测docker版本,目前我们的DockerAgent仅支持1.15以上的Docker版本。

图片 3

然后,使用dockerps命令来取得容器的运行信息和容器id,容器name,此时便可获知在此台机器上正在运行的docker容器都有哪些。

最后,依次取得这些docker容器的性能指标。取得性能指标的方式,有部分使用docker原生接口,有部分是运行云智慧自己的算法。其中包含容器与主机的系统时区/时间;容器的cpu使用率(通过cgroup/cpuacct内该容器的cpuacct.stat取得);容器的ip;容器内运行的进程数;容器的内存指标,rsscachememory_limittotal_cwop等(通过cgroup/memory内该容器的 memory.stat取得);容器的网络指标(通过ifconfig/ statistics取得)。DockerAgent发布上线以后,在当天就接到了非常多热心用户的反馈。很多反馈非常好,我们也在积极地吸收和改进。为大家解决真正头疼的Docker运维、监控、管理问题。相信在很短的时间内,将迭代出更优秀、更稳定、更符合用户预期的DockerAgent,以此不仅填补国内的Docker监控空白,更会真正成为众多Docker用户、企业的伙伴,为大家解决真正头疼的Docker运维、监控问题。

问:咱们和datadog之类docker监控有啥区别和优势?

答:DataDog的安装部署太过繁琐。当时尝试时用了一下午才跑出来数据。DataDog的图表定义比较自由,这点是比较好的;而我们的 Docker监控最大的优势,就是零基础部署。另外,DataDog太贵,好像一个Agent要接近100人民币吧。目前CloudWise的 DockerAgent完全免费。

问:刚才说 docherconfig 是定时与云平台同步,同步的是docker process和docker ping采集到的数据吗?

答:不是同步采集到的数据,是同步配置。

问:我看讲的是通过sendproxy异步到云平台的啊,那么dockerconfing的作用是什么?

答:DockerConfig是定时从云平台取得配置信息,采集到的数据,是由DockerProcess与DockerPing自行交由SendProxy。同步的数据其实就是Task的属性,比如任务名、任务频率、任务状态。

问:采集数据原理是先ps命令机器上那些 docker容器,再去用docker info获得他们的指标吗?

答:dockerinfo是返回当前机器上整体的docker指标,然后ps取得活着的docker容器,依次取它们各自的指标。

问:那包括了ps命令出的docker吗?ps直接就取了吗?这么说ps不仅仅是获取那些活的docker容器,还包括他们指标?

答:ps取不到指标,取得的是活的容器并列举;然后用其他的方法取它们的指标。容器名字也是ps时列举时一起取得的。

以上是Neeke就监控宝Docker监控的实现原理进行的分享,大家可以注册监控宝进行免费试用,有任何问题或需求请与我们联系。

分享人高驰涛(Neeke),云智慧高级架构师,PHP 开发组成员,同时也是 PECL/SeasLog 的作者。8 年研发管理...

他还表示,本轮融资后,公司将在几个方面发力。首先是继续加大产品研发的投入,进一步提高产品的智能化和通用化水平;在经营层面,云智慧销售团队主要位于北上广深等一线城市,未来将向二三线城市部署更多销售渠道;此外,公司营收比较健康,未来两三年将考虑上市,会提前做一些准备。

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

/sys/fs/cgroup/docker/cpuacct.stat

营收层面,云智慧去年收入近 3 亿,大客户的服务收入占过半,客单在百万级别,公司连续三年增速在 100%。殷晋表示,公司新增长多来自 ITOA和 ITSM两块,大客户需求尤其强劲,预算比较充裕,达百万元级别非常正常。

Total解决方案

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

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

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

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

e袋洗架构中的Docker容器分为三种:外部访问型Docker,内部服务Docker,基础服务型Docker。邸跃详细介绍了这些Docker的制作策略,配置管理,打包机制,以及Jekins持续集成。

云智慧获千万级美元 B 轮融资,希望从技术端入手覆盖企业前后端管理

Docker监控方案的发展趋势

本文头图来自 东方IC正版图库

Librato

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

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

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

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

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

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

接下来是灵雀云客户,e袋洗架构师邸跃带来的演讲『微服务架构下的Docker实践,以及Docker在测试环境中的应用』。

云智慧创始人兼 CEO 殷晋表示,C 轮融资后的两年间,公司业务进展主要在两方面:

Datadog

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

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

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

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

————————————

标签机制

一种观点:监控服务状态胜过监控个别容器,通过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”

“云智慧”孵化的“天机数据”,获红杉、戈壁联合投资1000万元

Cloud Insight

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

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

Docker 监控之 SaaS 解决方案

Docker 监控之 SaaS 解决方案

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

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

其次,云智慧目标客户向传统产业渗透,体量越来越大。销售工具型 SaaS 产品时,云智慧主要为互联网企业提供服务,偏中小企业,客单价不高,2016 年推出业务运维后,面向的领域也拓展到了金融、物流、航空、地产、快消、智能制造等面向 C 端消费者的传统行业。

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和服务发现组件了。

APM赛道中,国内还有像听云、OneAPM等玩家,发展趋势都是从中小企业到大客户,从 APM 延伸到更加多元的方向。比如,云智慧从 APM 到全栈业务运维,其孵化的子项目“天机数据”所主攻的方向——实时大数据监测也是其中一个延伸方向。另外,也有 APM 公司拓展到安全行业,提供 IT 运行监测服务。

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

Ifconfig eth0

本轮融资过后,云智慧也将启动海外上市日程。

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,而且不能用于盈利性服务,也不能对软件进行修改以及再发布。

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

2016年灵雀云首场线下活动,释放云的无限潜能——应用性能管理大讲堂于3月19日在启迪之星举行,本场线下沙龙将围绕『Docker应用的性能与监控』这个主题展开。

相关阅读

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

Docker的云端实战

而在获客层面,面对 IBM 等传统运维服务商的竞争,云智慧以客户的新增业务需求为切入点。以银行举例,一些创新业务部门如手机银行、数字零售等,这些部门的IT系统建设时间不长,从监控到运维管理都有较大的需求,云智慧可以进行错位竞争

通过API打通

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

而涉及Docker应用的状态,可以从以下几个方面进行监控:

独家 | 云智慧获2600万美元C轮融资,从APM做到业务运维

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功能之外,还提供了跨平台跨基础设施的组件间依赖关系的可视化。

首先业务层要做成模型化、抽象化,功能要单一起来,避免代码耦合;

本文由必威发布于必威-运维,转载请注明出处:云智慧还曾获得由宽带资本领投,1、Docker监控概

相关阅读