从垂直搜索起家,后杀入在线旅游交易。去哪儿网的业务越来越复杂,整个技术系统对可靠性、质量的要求越来越高,去哪儿网的工程师们克服了种种困难,确保了最终系统的顺畅运行。例如, 去哪儿网的运维团队基于开源项目Graphite+Grafana+Nagios二次开发了监控系统Watcher,用来支撑去哪儿百万级别的基础/业务监控指标。
2016年8月18-19日, APMCon2016 中国应用性能管理大会将在北京举行( 现在报名,享6折优惠 )。本届大会,我们有幸邀请到了去哪儿网运维开发工程师张悦,前来分享《去哪儿监控系统实践》的内容,讲述她在 Watcher开发过程中对监控系统性能的 探索经验与实践。
张悦:我是从2013年毕业就加入去哪儿,一直从事监控方面的改进和开发工作,参与Watcher从选型、设计、开发到维护的全过程,从一开始两个人到现在稳定的三个人的小团队,我们自己做产品+开发+测试。虽不敢说Watcher是一个成熟完备的监控方案,但现在Watcher已经承载了去哪儿网大部分核心业务的监控和告警。
目前我还是主要负责监控相关的开发和运维工作。
张悦:其实Cacti我们也用了很长一段时间,一开始还是蛮稳定的,而且Cacti有丰富的第三方插件,但是随着指标量的增长,在性能上、扩展性上以及用户的使用效率上出现了一些问题,比如:
所以,基于以上我们开始着手新监控系统时,设定的目标是必须要做到:
张悦:首先数据准确性上,上面提到了,之前Cacti因为不是分布式的,单机磁盘有限,所以选择压缩历史数据,一个月以前的数据就失真了。Watcher设定目标时有一点是一定是要可横向扩展的,选型时我们选择了基于Graphite,之所以会选择它,很大一部分原因也是它的设计完全是scale out,每一层都是可扩展的。那么既然可以横向扩展,我们就可以把不压缩的时间区间放的大一些。同时我们也会对收集的指标进行抽样监控,比如断点监控,一定程度上也是保证数据的准确性。
关于可视化,我们希望可以做到直观方便,想怎么看就怎么看。我们选择基于Grafana来做二次开发,定制开发的主要点是集成Qunar的产品树、用户体系和基础监控,在dashboard上提供多维度灵活的数据展示,以及自定义空间来展示核心监控,再配合Grafana强大的可视化,基本达到了最初我们想实现的效果。
张悦:最基本的是设置大于XXX或小于XXX就报警,除此之外常见的用法还有环比上周大于XXX或小于XXX;可设定检查的频率、多次不OK再报警;不同时间段设置不同的报警规则;支持临时规则;报警联系人支持轮班;报警回调;多种通知方式等。
张悦:主要在两个方面,一个是成本,一个是人员效率。当量小的时候,我们需要资源也少,但是目前Watcher监控指标已超过800万+, 每分钟集群要支撑1500万指标上报,虽然Watcher是可横向扩展的,可以理解成加机器就可以了,但是这中间还是有很大优化的空间的,所以我们就需要关注成本控制。另外就是下一步计划报警上要继续完善,健全报警机制,通过人员对报警、故障的应答时间,反映出人员、团队的工作效率。
张悦:监控相关的工具有:
日志收集工具:
存储工具:
配置管理工具:
LB工具:
这里只列举出来一部分我们在用的工具,我参与选型及开发的主要还是监控相关的。不过可以说一下我们对开源软件选择的思路,选择的过程基本是先分析场景,然后看每个软件跟场景的匹配程度以及开源软件的成熟程度,首先找到合适的开源软件,然后把它与我们的运维体系集成起来,比如OpsDB,先解决了大部分问题,才会考虑基于原始版本定制开发。所以我们对自动化工具的选择就是选型加迭代,选择适合当前场景下的运维方式(工具)才是最重要的,并且总是把一个组件的从头开发放到最坏的打算里,Watcher的选型过程也是按照这个思路做的。
张悦:订单被取消的可能性有很多,所以监控点也会很多。一般可以对“取消订单”量计数,根据指标波动情况设置阈值(包含同比阈值)来报警。
张悦:特别荣幸能参加APMCon,作为一个默默无闻的程序媛,竟然能有幸和那么多技术大神一起分享,对自己来说是一次非常好的学习和锻炼的机会。
这个演讲主要是分享去哪儿监控系统Watcher的设计、选型、架构,Watcher的开发过程中遇到的问题以及一些经验。这些经验对如何使用开源项目快速搭建一套监控系统会有一些帮助。
张悦 ,去哪儿网运维开发工程师。于2013年加入去哪儿。一直从事运维开发,参与开发Watcher监控系统,现负责监控相关的开发和运维工作。