张振辉 360云计算
女主宣言:
由于小主昨天被一GG(chou nan)骚扰,一烦躁把刚发的文误点了删除,导致这篇很有价值的干货文章推迟一天与大家见面。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
360监控系统wonder简介
为了解决这些问题,我们基于 Open-falcon 深度定制,从后端存储到前端展示自行开发了一套完整监控系统wonder,现已正式上线为公司业务提供全方位的监控服务。
那么我们为什么要选择自主研发监控系统?主要是考虑以下几方面的原因:性能瓶颈、定制化需求、易用性、以及完全自动化。
1开源监控系统软件非常多,常见有cacti、ganglia、zabbix等。在使用zabbix中发现当超过6000台设备时poller并发能力、数据存储高可用都会成为瓶颈,如下zabbixserver监控图
每个业务都有自己的一套监控指标,同时针对每个业务,根据不同的用户,需要建立各自的dashboard,比如针对老板、研发、运维、测试,关注的dashboard侧重点都有所不同,所以每个业务都要有自己的dashboard,更要有一个强大的cmdb支撑。
3权限及一体化管理界面的需求,监控平台不仅仅面向运维人员,开发人员、运营人员、测试人员也需要经常使用
4机器从上架、安装系统、初始化、分配业务、自动关联报警策略等都需要自动化处理基于以上痛点,我们开发了自己的wonder监控系统,在此感谢 open-falcon的开源,原生的功能见官网http://open-falcon.org/,在这里重点介绍下改进的功能以及如何作为一个产品为公司所有业务使用。
agent部署到设备时会自动上报当前版本号current_version,当有新版本时设置下更新后的版本号就可以针对部分或者全量设备自动升级到新版本
使用http方式替代原生的git下发脚本,并支持脚本多参数(多key)输出,下图为多个key值的监控图
可自定义时间按照字符串匹配、数字匹配、滚动数目匹配日志进行报警
支持tcp和udp协议,多机房部署监控节点,当全部节点都探测不通时认为端口挂掉随即报警
5、支持agent自身cpu、内存、磁盘占用监控
采用fping的方式多节点采集ping值数据汇总后发给transfer,可自定义几分钟ping不通即可报警
所有历史监控事件(problem→OK→problem)全部保存在mongo中,并把最后状态显示在页面上,方便业务查看当前机器状态
当其中一个judge组件重启后,由于lastevent是保存在内存中,会导致报警重置,重新判断策略。为了解决这个问题,我们改造judge把lastevent存在了redis(持久化保存),并且当策略被删除或者禁用后报警自动中止
所有报警策略定时(10s)从mysql刷到redis当中,当报警策略发生变化时可以及时生效
结合hulk的业务关系,报警短信除了机器信息外会把业务名字一起发出,方便用户收到报警时快速定位到项目
每个业务都有自己的专属dashboard、可自定义增删减节点和概览图
支持基础监控、端口监控、日志监控、自定义监控、监控策略模板定制、公共脚本管理,界面化操作让用户使用更加方便
3、报警组人性化灵活设置报警发送时间段、邮件和短信开启关闭、宕机报警过滤、报警短信清理
策略继承、灵活开启关闭继承策略、策略模板设置
可以批量选择多台机器多个监控项,不同粒度展示各自监控图
历史报警定期统计展示,业务运行状况一目了然
针对每个用户可以设置不同的业务权限
总结
wonder目前已监控20K+设备,收集500万+监控项,transfer的qps80K+,服务1000多个业务。通过以上wonder监控系统的这几大功能模块,极大的方便了用户了解自身业务情况以及排查历史问题,日后还会增加更加强大的功能,如趋势预测、报警智能自处理等,让监控更加智能自动化,还是那句话:没有做不到,只有想不到!