这个世界上开源和收费的监控系统实在是太多了,而不是太少了。无论是传统的nagios,ganglia,还是所谓的云监控系统。它们的工作方式其实都差不多,安装一个agent,上报数据,然后花花绿绿的图表就显示在web界面上了。无论这些系统如何包装,前端写得多么漂亮,一看截图十有八九图例是“cpu1”,“cpu2”。cpu使用率,内存,磁盘,仿佛把这些东西的曲线画在一个web界面上,监控工作就完成了似的。好吧,你有cpu使用率曲线图了,so what?

监控是多学科交叉非常有深度的课题。其职责一般落在一个部门里的运维身上来落实,比如我这样的人。我们知道技术里一流的人才去做架构师了,二流的人才去做后台开发了,三流的人才比如我这样的就来搞运维了。搞好监控是一项与运维传统技能(能熬夜肯加班,虎背熊腰扛机器)非常不match的工作,它包含四个方面的内容:

  1. 根据目标选择监控的对象
  2. 数据上报与实时统计
  3. 异常检测
  4. 由人或者系统来处理

其中数据上报与实时统计需要非常强的工程能力。简单的搞个小脚本往中央的一台开源监控系统定时报个数就行了,表面上很简单。但是大型系统监控往往对应到了jd里的所谓“大数据”经验。你需要从选择hbase还是postgresql,选择storm还是spark,选择metaq开始kafka,选择flume还是logstash这些开始,然后经过一个漫长的学习过程,最终学会了如何fancy而优雅地“数数”。

异常检测是一个表面上非常简单的活。比如给定一颗cpu,平时都是40%的占用率。那好,我配置一个80%的阈值,超过就告警,完事了。但如果你要监控的对象一根一天上下变化非常剧烈的曲线呢?早上可能只有几千,中午和晚上可以到几十万。这个时候去检测异常就不再是一个阈值这么简单的工作了。这项工作的学名叫Outlier Detection,按照分类来说属于机器学习,自打有计算机这门学科以来从简单的自回归到现在的SVM神马的,paper是层出不穷的。简单来说,这是一片有着科学家头衔人群从事的领域。

即便是发条告警消息这么简单的一件事,也事关cognitive bias。有人还研究飞机驾驶舱的告警消息设计是如何导致大西洋坠机事件的。还有花花绿绿的仪表盘,如何设计好以更好利用人眼的认知方式以传达信息,这也是一门很深的学问,叫data visualization。这个领域有一家大名鼎鼎的公司叫tableau,其创始人以前是在好莱坞搞动漫渲染的。

故障处理就是个擦屁股的活。那些架构师们设计了一个高可用的架构之后,他们的工作就高大上的完成了。故事是这样的,一台application server挂了,前段nginx检测到自动把这台application server踢掉,用户完全不受影响。然后后台开发们就可以光荣自豪的说,前段机器哈随便挂的说。运维苦哈哈的嘟囔着,尼玛又挂了。一个集群里挂个一两台application server可能是没啥关系的,但是挂多了呢,雪崩了呢?挂掉的机器咋处理,放那晾干么?故障及不还得修,不还是得人来管?运维们就像唐顿庄园里地下室的仆人们一样,做一些卑微但是必要又无人欣赏的工作。更加不要说,没有做高可用的架构了。一台登陆服务器挂了,cao,无论你是在陪女朋友逛街,还是第一次相亲,都得飞奔到有3g信号的地方开始ssh。

好像少了什么。哦,忘记说了。这是篇招聘帖,老板说了再招不来人我就要滚蛋了。如果你对以上工作内容的任何一条感兴趣,请联系我:blueking.jobs@gmail.com。没有薪资范围的招聘都是耍流氓,我就耍了,怎么的?有本事来找我啊?联系地址:腾讯游戏,深圳南山科兴科学园。是的,英雄联盟,穿越火线,天天酷跑就是我们部门负责运维的。经常挂,进不了大区?是的……所以我们要招人好好来搞嘛。anyway,call me,约吗?


taowen
4.1k 声望1.4k 粉丝

Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com