张振辉 360云计算


360监控系统wonder简介_Java

女主宣言:


由于小主昨天被一GG(chou nan)骚扰,一烦躁把刚发的文误点了删除,导致这篇很有价值的干货文章推迟一天与大家见面。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!


众所周知,监控是整个运维环节中最重要的一环,业务产品的后勤保障,出现问题需要及时发现,事后提供数据用于问题追查以及分析业务指标等。在面对需要监控数以万计的设备、跨全球运营商的上百个机房,在如此复杂的网络环境下,如何确保监控系统可以实时收集到所有设备的精准数据,并且可以存放几年的历史数据,是技术上需要面对前所未有的挑战。


360监控系统wonder简介


为了解决这些问题,我们基于 Open-falcon 深度定制,从后端存储到前端展示自行开发了一套完整监控系统wonder,现已正式上线为公司业务提供全方位的监控服务。

那么我们为什么要选择自主研发监控系统?主要是考虑以下几方面的原因:性能瓶颈、定制化需求、易用性、以及完全自动化。

1

开源监控系统软件非常多,常见有cacti、ganglia、zabbix等。在使用zabbix中发现当超过6000台设备时poller并发能力、数据存储高可用都会成为瓶颈,如下zabbixserver监控图

360监控系统wonder简介_Java_02

2

每个业务都有自己的一套监控指标,同时针对每个业务,根据不同的用户,需要建立各自的dashboard,比如针对老板、研发、运维、测试,关注的dashboard侧重点都有所不同,所以每个业务都要有自己的dashboard,更要有一个强大的cmdb支撑。

3

权限及一体化管理界面的需求,监控平台不仅仅面向运维人员,开发人员、运营人员、测试人员也需要经常使用

4机器从上架、安装系统、初始化、分配业务、自动关联报警策略等都需要自动化处理

基于以上痛点,我们开发了自己的wonder监控系统,在此感谢 open-falcon的开源,原生的功能见官网http://open-falcon.org/,在这里重点介绍下改进的功能以及如何作为一个产品为公司所有业务使用。


一:agent新增及改进功能1、支持自动更新

agent部署到设备时会自动上报当前版本号current_version,当有新版本时设置下更新后的版本号就可以针对部分或者全量设备自动升级到新版本360监控系统wonder简介_Java_03



2、支持自定义监控

使用http方式替代原生的git下发脚本,并支持脚本多参数(多key)输出,下图为多个key值的监控图

360监控系统wonder简介_Java_04


3、支持日志监控

可自定义时间按照字符串匹配、数字匹配、滚动数目匹配日志进行报警


360监控系统wonder简介_Java_05

4、支持远程端口监控

支持tcp和udp协议,多机房部署监控节点,当全部节点都探测不通时认为端口挂掉随即报警


360监控系统wonder简介_Java_06

5、支持agent自身cpu、内存、磁盘占用监控


二:增加存活宕机监控

采用fping的方式多节点采集ping值数据汇总后发给transfer,可自定义几分钟ping不通即可报警


三:保存所有alarm事件

所有历史监控事件(problem→OK→problem)全部保存在mongo中,并把最后状态显示在页面上,方便业务查看当前机器状态

360监控系统wonder简介_Java_07


四:judge的改进

当其中一个judge组件重启后,由于lastevent是保存在内存中,会导致报警重置,重新判断策略。为了解决这个问题,我们改造judge把lastevent存在了redis(持久化保存),并且当策略被删除或者禁用后报警自动中止


五:hbs的改进

所有报警策略定时(10s)从mysql刷到redis当中,当报警策略发生变化时可以及时生效


六:报警内容的改进

结合hulk的业务关系,报警短信除了机器信息外会把业务名字一起发出,方便用户收到报警时快速定位到项目360监控系统wonder简介_Java_08


以上为功能上的改进,下面讲下如何把这些功能融入到我们的产品wonder当中,为全公司提供服务。


 1、首先需要有一个强大cmdb支撑

每个业务都有自己的专属dashboard、可自定义增删减节点和概览图

360监控系统wonder简介_Java_09


 2、监控类型多样化

支持基础监控、端口监控、日志监控、自定义监控、监控策略模板定制、公共脚本管理,界面化操作让用户使用更加方便

360监控系统wonder简介_Java_10

 3、报警组人性化

灵活设置报警发送时间段、邮件和短信开启关闭、宕机报警过滤、报警短信清理


360监控系统wonder简介_Java_11

 4、报警策略多样化

策略继承、灵活开启关闭继承策略、策略模板设置


 5、历史数据查询

可以批量选择多台机器多个监控项,不同粒度展示各自监控图 


 6、统计报表

历史报警定期统计展示,业务运行状况一目了然


 7、人员管理灵活性

针对每个用户可以设置不同的业务权限


 8、app接收报警


自主开发了报警app来替代原有发送短信方式,可以设置只发短信、只发app、发送app(当手机无网络时会自动补发报警短信)既节省短信费用又提高了报警内容字符数

总结

wonder目前已监控20K+设备,收集500万+监控项,transfer的qps80K+,服务1000多个业务。通过以上wonder监控系统的这几大功能模块,极大的方便了用户了解自身业务情况以及排查历史问题,日后还会增加更加强大的功能,如趋势预测、报警智能自处理等,让监控更加智能自动化,还是那句话:没有做不到,只有想不到!