ArchSummit深圳站学习笔记 – Part 1

小米监控运维之路

主讲人及背景

小米 云平台工程师 陈帅

    • 多年从事于监控系统、部署系统、缓存系统的研发工作,热衷于自动化运维理念,独立完成公司部署系统的设计和研发,多次参与中国移动等竞标缓存系统的设计工作。
  • 加入小米后,专注于小米监控的设计和研发工作,对于监控系统的应用场景和实践有较深入的理解。

关键点

    • 如何应对业务规模及数量快速增长
    • 自主开发实现监控系统
    • 提供可集成到业务代码监控SDK
  • 针对集群而非单个主机进行监控

笔记

    1. 11年到14年,管控主机从200台增长到5000台。和我们情况类似,发展迅速,人力不足。
    2. 早期,同样全面采用Zabbix进行监控。
    1. 中后期(12年开始)开始自主研发监控系统。流程和Zabbix几乎一模一样。
    1. 提出针对主机采用“全生命周期自动化”管理。即:在机器建立、启动、交付、运行、停止、回收到销毁的过程中,都通过整个监控系统管理。去掉人工直接处理的步骤。
    1. Agent直接采用主动PUSH的模式(类似Zabbix主动模式)。

      系统架构

    2. 自行开发能够嵌套进业务代码的监控代码SDK,类似于NewRelic的模式。
    3. 机器体系设计采用打Tag方式,八个字段即:公司-部门-产品-集群-服务组-服务-任务组-任务。
    4. 策略模板除了可以继承外,还可以重载,即继承后复写。
    5. 针对集群而非单个主机进行监控,即:同一集群内机器,存在性能冗余。无需100%保证全可用,可用性通过简单四则运算即可完成计算。从实际上看,效果显著。
    6. 监控系统集成自动缩扩容,通过上述监控来自动动态管理。
    1. 大力推行Docker容器技术,容器编排框架使用的Marathon。自动缩扩容也通过其实现。
    2. 网络监控(包含网络硬件及流量监控)是很重要的项目。
  1. 自动运维基于StackStorm实现。

感悟

从小米的分享来看,比较适合我司现状。其技术选型虽无太多新意,却很容易落地。不管是容器技术的大量运用还是通过Tag方式直观地管理机器,都是我们正在努力的方向。

个人认为值得注意的有两点:

第一,小米初期采用第三方开源监控系统,但后期却选择自研。这个选择不一定适合现阶段的我司。理由很简单,系统雷同又耗时。其自研系统Open-Falcon与Zabbix大同小异。虽然提供了可以嵌入业务代码的SDK等功能,但是我觉得还不足以让我们付出比较大的成本也去开发一套类似的系统。现有业务环境下,我们还是可以采用多套开源/商业方案来实现需求。当然,后期做大做强,自研势在必行。

第二,小米提到的针对集群而非单个主机进行监控的想法非常好——就类似于AWS的ELB——我们在CloudWatch里面可以直接查看针对ELB的监控数据,但是目前看来第三方监控系统都是采用以Single Host为粒度的监控方式。显然,一般集群都采用冗余且主机间低耦合模式设计,无需保证全集群100%健康度。这样可以大大降低我们的工作强度——只要在能保证生产环境安全运行的前提下,分清故障优先级,有的放矢。

REFERENCE

[Marathon]: http://mesosphere.github.io/marathon/

[StackStorm]: https://stackstorm.com/ 

[Open-Falcon]: http://open-falcon.org/

写在后面

周五周六InfoQ主办的ArchSummit深圳站在洲际召开。

含金量确实高,来了很多大佬,

票价也确实高。入门票5k起。Orz。

我司是几个人的小公司吗???:)

于是靠胜哥刷脸去听了两场监控相关的分享会。

ArchSummit深圳站学习笔记 – Part 1

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据