总篇125篇 2021年第16篇
前言
本文主要讲述了小米的监控系统open-falcon在之家的应用和实践,通过本文可以了解到open-falcon在之家的应用场景与改进过程,给与广大读友们类似需求的一些解决思路。
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题,这一点对于公司的研发体系来说至关重要。
监控系统业界有很多杰出的开源监控系统。早期很多公司一直使用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,zabbix系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。之家从互联网公司的需求出发,从SRE、SA、DEVS的使用经验和反馈出发,对比了业界一些成熟主流的开源基础监控方案:
安装复杂度 | 数据采集支持 | 数据储存难度 | 告警支持 | |
Zabbix | 中 | 低 | 高 | 高 |
Prometheuss | 低 | 高 | 高 | 中 |
Open-falcon | 高 | 中 | 低 | 中 |
对比三种监控数据的各个特征指标,能够得出结论open-falcon不是功能最强大的,但是是使用最简单便捷的。特别是数据存储方面不用担心数据量一直增加而出现的磁盘问题,节省运维成本。同时考虑目前公司的服务器规模,功能需求不复杂以及可能需要的告警扩展,open-falcon都能够满足需求。
OpenFalcon的架构概述
OpenFalcon是由小米的运维团队开源的一款企业级、高可用、可扩展的开源监控解决方案,在众多开源爱好者的支持下,功能越来越丰富,文档更加的完善,OpenFalcon已经成为国内最流行的监控系统之一。
Openfalcon是采取了前后端分离的架构,后端用Go语言开发,前端用Python开发。编译后的后端程序运行时,不再需要Go语言环境,直接将可执行文件拷贝到某台机器上面运行就可以了,而前端是需要python环境。当机器数量比较大的时候,一般会预先将Agent安装到机器上(物理机标准化装机时安装,虚拟机可以封装到镜像中,私有云或者公有云都支持主要都是网络问题)。当Agent运行时就会上报数据。
我们做了什么?
原生的open-falcon监控的数据大多以列表的形式进行数据管理,并且并没有与资产管理系统打通。为了适应护航平台新的CMDB系统,支持对服务数据进行监控和告警。我们对open-falcon做了二次开发,实现基于服务树的动态监控系统。
我们重写了dashboard和hbs组件,融入护航系统平台,使监控对象来源于CMDB的服务树,目的是资产和监控数据打通,方便监控维护和告警配置,不用人为维护主机组和配置告警模板,减少人为数据干预,更加能保证数据的准确性。并且基于树结构管理监控模板,便于对监控继承和独立快速配置。
2)告警对象不再是基于服务器,而是可以基于服务也可以基于主机,甚至容器的节点。增强了监控对象的范围。
我们公司会有这样的场景,一个节点下的机器,不同的监控项会有不同的关注者,通用的监控指标和特殊的指标在触发告警的时候需要通知不通的关注人,所以我们开发了支持基于单个告警监控项订阅配置,单个策略项触发告警可以不用通知模板订阅人,而是单独通知策略订阅人,完成在同一个模板下,不同的告警项可以通知到各自的关注人。
3)我们开发了监控的自愈功能,打通了我们的另一个产品《场景化运维》,当告警被触发以后,就可以携带着告警对象的信息运行预先设定好的一个场景,一个场景可以包含多个编排好的任务,任务的内容是通过salt运行命令,脚本或者执行callback等方式达到自愈的目的,实现告警-处理的自动化。另外,告警触发以后,在自愈延迟的时间范围内,用户还可以取消本次自愈场景,使告警处理更加灵活。
6) 对告警支持全局屏蔽,支持基于服务树进行告警屏蔽,告警项进行告警屏蔽。还可以根据资产在CMDB的状态进行告警屏蔽,在资产的整个生命周期中,当资产的状态处于非正常状态时,比如装机、下线、重装、报修等等,此时触发的告警并不会通知给告警订阅人,这样在一个资产的整个生命周期内,完全没有人工操作,实现告警的全自动的通知和维护。
7) 因为之家机器和系统的种类比较多,open-falcon的agent偶尔出现误报的情况,我们发现通常是由于系统时间错误和服务假死引起的。对于这个问题,我们做了一个通用性的处理:每5分钟做一次巡检和根据巡检结果为失败时进行的自愈,主要是针对系统时间的校验和更正同时进行服务状态的重新启动,此功能上线后,agent连通率有了显著的提高。
未来的预期
之家监控依赖于open-falcon-v0.1,上线之后虽然针对服务树、hbs、alarm、nodata等进行了二次开发。但是整体组件已经多年没有升级和更新,下一步可能会考虑将open-falcon升级为nightingale进一步提升查询效率,增加某些模块的故障自动摘除能力。
在硬件监控方面,由于服务器机型和种类繁多,带外管理不能完全满足需求。因此还是需要open-falcon提供一些硬件监控功能,虽然现在也提供了一些插件的支持,但是种类单一,一般只有硬盘,内存等少数的几个硬件指标。HWcheck虽然监控的指标种类很多,但受到厂商机型的限制。下一步可能需要跟服务器厂商沟通,自研硬件监控的agent。
作者简介
张朋
汽车之家-智能数据中心
负责之家护航运维平台的建设与维护工作,致力于为公司打造自动化运维平台。