基于Nagios的银行集中监控系统的构建与应用
2013-04-29罗奕,陈粤
罗奕,陈粤
摘 要: 银行为了在发生异常时能及时处理,往往会通过监控系统来实现对硬件、网络、应用系统等的监控和报警。Nagios是一个开源且免费的计算机及网络系统监控软件,运行在Linux平台上,能通过各种插件和SNMP协议,对设备、网络及各种应用系统进行状态监控。介绍了Nagios的工作原理和功能,以及在平安银行成都分行的应用情况。具体应用实践表明,利用Nagios构建集中监控系统效果非常显著,为银行的生产运维提供了有效的监控报警平台。
关键词: Nagios; 集中监控; SNMP; 报警
中图分类号:TP319 文献标志码:B 文章编号:1006-8228(2013)06-30-04
Construction and application of Nagios-based centralized monitoring system in banks
Luo Yi1, Chen Yue2
(1. Medical information engineering college,Chengdu University of Traditional Chinese Medicine, Chengdu, Sichuan 610075, China;
2. Ping An Bank Chengdu Branch)
Abstract: In order to deal with unexpected abnormal events in time, monitor or alert of devices, networks or applications are realized usually through monitoring systems in banks. Nagios is a free and open-source software running on Linux to monitor computer or networks status. It detects the devices, networks, and applications states by many plug-ins or SNMP protocol. Nagios working principle and primary functions are introduced in this paper, and the actual cases of Ping An Bank Chengdu Branch are analyzed. The practical examples show that constructing centralized monitoring system by using Nagios has good effects and is efficient for bank daily working tasks supporting.
Key words: Nagios; centralized monitoring; SNMP; fault alerting
0 引言
银行科技部的管理人员最担心在不知情的情况下发生异常突发事件,比如机房供电异常、设备硬件故障、应用进程终止、网络通讯中断等等,而且某些故障发生后,科技人员不能第一时间发现故障,直到出现明显不良影响,才发现问题,采取补救措施,特别是遇到节假日,这种风险就更大。要使系统能正常稳定运行,管理员就必须时刻关注各个系统的硬件状况、服务进程、网络是否正常、CPU、内存使用率是否过高、数据库可用空间、UPS负载是否合理等等。如果在没有自动监控工具的帮助下,这些日常必须的检查工作就需要由人工去做,这样不仅效率低下,消耗大量的人力资源,而且容易发生漏查、错查现象。
为改变这种被动局面,银行往往会引进一些监控系统来实现自动监控功能,用计算机来代替人工进行日常检查,并在一定的条件下自动报警。目前市场上的网管系统、环境监控系统、服务管理系统等产品都有这些功能,但是,这些产品往往功能单一,比如,网管系统就只监控网络状态,环境监控就只对机房环境做出响应,服务管理系统只对进程实施监控。需要同时部署多个系统才能比较全面地实现监控功能,这么多监控系统不仅价格不菲,而且给后期运维带来不便。能否用一种监控系统,就能实现多种软硬件平台、多种业务系统的集中监控报警功能呢?这是银行真正需要的系统。
经过不懈地寻找与部署,试用各种不同的监控软件,终于找到了一个符合银行上述要求的监控软件——Nagios。通过一年多的实践使用,利用Nagios构建的监控系统效果非常显著,为银行的生产运维管理提供了有效监控报警平台。
1 Nagios简介
Nagios是一个监视系统运行状态和网络信息的系统,它是一种开源且免费的管理工具,运行在Linux/Unix平台之上,能监视指定的本地或远程主机以及服务,提供邮件报警功能以及Web界面,方便系统管理人员查看网络状态,各种系统问题,以及事件日志等等。2009年,Nagios被InfoWorld评为最佳开源软件,同时也是该年度SourceForge社区的系统管理工具最佳选择。2010年的LinuxCon会上又被选为最受欢迎的IT运维工具。Nagios已被很多世界知名企业用于监控管理,包括AOL、DHL、AT&T、欧莱雅、德州仪器、时代华纳有线、Yahoo等。
Nagios由一个主程序(Nagios)、一个插件程序(Nagios-
plugins)和四个可选的扩展应用(NRPE、NSCA、NSClient++和NDOUtils)组成[1],如图1所示。
图1 Nagios架构图
Nagios和Nagios-plugins是服务器端的必须组件。在四个主要扩展应用中,NRPE和NSClient++分别被部署到被监控的Linux/Unix和Windows主机上以实现Nagios服务器对被监控主机资源的检测;NSCA用来让被监控的Linux/Unix主机主动将资源信息发送给Nagios服务器;NDOUtils用来将Nagios的各种事件信息存入数据库,以实现对这些数据的快速检索和处理。
Nagios系统具有很好的扩展性,它本身并没有检测功能,它所有的检测都是通过它的各种开源插件来实现的(比如NRPE和NSClient++),所以,我们也可以按照自己的需要来开发和使用各种检测功能的插件。从图1中我们还可以发现一个很关键的地方,那就是Nagios对SNMP协议的支持,这意味着可以实现对所有支持SNMP协议的主机或者设备的监控,只需要知道监控目标的OID值即可。
以Linux目标机器的监控为例说明Nagios的工作原理:在Nagios服务器上对每一台被监控主机的各种资源对象进行阀值定义,比如CPU、内存、磁盘的占用率、进程状态、数据库表空间大小等等,并指定该监控对象的责任人和邮件地址。在被监控主机上运行一个NRPE后台进程,Nagios服务器定期向被监控主机的NRPE进程发出指令,要求NRPE进程执行对各种资源对象的查询脚本,并将查询结果返回给Nagios服务器。Nagios服务器根据预先定义好的监控阀值对结果进行检查,一旦发现超出阀值,则立即向管理人员发送报警邮件,其监控原理如图2所示。
图2 Nagios监控Linux/Unix主机原理图
2 Nagios的主要功能
⑴ 监视各种服务状态 (SMTP、 POP3、 HTTP、 PING、数据库等);
⑵ 监视主机资源 (CPU、内存、磁盘、UPS负载、进程、端口等);
⑶ 简单的插件设计,使用户可以自行扩展Nagios的监控功能;
⑷ 监控的对象发生故障,自动发送报警邮件;
⑸ 支持各种操作系统,包括Windows、Linux、UnixWare、SUN、AIX等;
⑹ 可以通过Web方式直观的查看当前各种监控对象的状态。
3 平安银行成都分行的集中监控应用
平安银行成都分行(以下简称分行)目前已利用Nagios系统对行内核心服务器、应用系统、网络设备和通讯线路、UPS供电等分行IT设备和应用的集中监控管理,共计83台设备、413个服务状态。包括支付系统、验印系统、支票影像系统、代理服务器、邮件系统、OA系统、客户经理考核系统、各种网络设备、UPS设备等,系统的监控对象主要包括磁盘空间大小、内存使用率、CPU使用率、服务进程、数据库表空间等等。所有这些监控目标都可通过一个Web页面进行集中检查,当主机或者服务状态异常时会用黄色或者红色显示,让人一目了然。如图3所示。
图3 Nagios集中监控页面(局部)
3.1 利用PushMail或者QQ邮箱实现免费短信报警
Nagios本身支持通过短信猫或者电话语音卡一类的硬件设备来发送短信或者语音报警,但安装硬件和配置比较复杂,而且还增加了投入。分行通过实践和摸索,利用分行自建的邮件服务器和各大通讯运营商推出的免费PushMail功能,在不用增加硬件和复杂配置的情况下成功实现了免费短信报警功能。其原理是:在Nagios服务器上将报警通知设置为管理人员的手机邮箱地址[2],比如130*****231@wo.com.cn,然后在联通的Email邮箱中启用免费的PushMail功能,这样,一旦该邮箱收到邮件,都将以短信方式将该邮件主题发送到手机上从而实现了短信报警功能。
另外,还有一种更快捷、更全面的微信通知方式。原理和PushMail基本一致,将报警信息发往管理人员的QQ邮箱中,比如359***653@qq.com,再通过微信自动接收QQ邮箱内容。随着智能手机和3G无线通讯网络的普及,这种方式更为有效。
3.2 对核心生产应用系统的集中监控
3.2.1 利用NRPE扩展应用监控Linux/Unix主机
以分行现代化支付系统业务为例,利用NRPE插件[3]实现了对支付系统的网络状态、登录用户数量、root空间、mbfe空间、depsmbfe空间、Sybase空间、大小额支付系统进程状态都进行了监控,如图4所示。
图4 现代化支付系统监控服务
3.2.2 利用NSClient++扩展应用监控Windows主机
如图5所示,以分行柜面验印系统业务为例,实现了对验印系统的CPU、内存、磁盘空间利用率、SQL Server数据库状态以及多个验印服务进程的监控。
图5 验印系统监控服务
3.3 对网络设备和通讯线路状态的集中监控
3.3.1 利用SNMP和Rping实现对网络设备和通讯线路状态的监控
Nagios对SNMP协议的支持非常完美,所以,我们可以通过在网络设备上启用SNMP只读通讯字符串的功能,来实现对网络设备状态的监控[4],同时,还可以利用端口状态来监控通讯线路。但随着MSTP线路的引进,虽然线路端口状态UP,但实际线路不可用的情况也随之产生,在这种情况下,分行利用同事编写的Rping插件程序[5]来对通讯线路进行进一步的测试,以确保线路的真实可用性。如图6所示,实现了对外联路由器的监控,包括路由器存活测试、CPU利用率、与人行、银监局、银联、公积金中心、德阳银行等外联通讯线路的监控。
图6 外联路由器监控服务
3.3.2 利用SNMP实现对Juniper核心防火墙的监控
为加强网络安全,分行部署了多台Juniper防火墙,其MIB库是未公开的,所以,分行积极与设备厂商沟通、协商,说明目的,最终得到厂商的认可,提供了该型号设备的MIB库,然后再利用Nagios对SNMP协议的支持,实现了对会话数量、CPU、内存利用率等防火墙关键状态的监控,如图7所示。
图7 核心防火墙监控服务
3.4 对机房UPS设备的集中监控
3.4.1 对分行中心机房精密配电机柜输入/输出状态的监控
持续稳定的供电保障是所有系统正常运行的基础,分行中心机房的供电状态监控非常重要。分行中心机房供电系统采用精密配电机柜集中控制所有输入输出电路,该机柜本身支持SNMP协议,所以,利用厂家提供的私有MIB库,实现了对机房供电系统的监控,包括:市电三相输入电压、频率、零相电流,以及每一台UPS设备的输入/输出电流,如图8所示。
图8 精密配电机柜监控服务
3.4.2 对支行UPS设备的监控
在Nagios系统上线前,支行网点发生电力故障时,科技部只有在接到网点人工报警电话后才能得知发生了电力故障,所以,对网点供电状态实施集中监控是非常必要的。为此,分行与UPS设备供应商通过深入交流、沟通以及现场勘查,在对费用、功能、稳定性等多种因素的综合考虑后,2012年分行对所有网点UPS进行了升级改造,给所有UPS设备增加了监控模块,最终实现了对网点UPS的集中监控。图9是金牛支行的UPS设备监控对象,包括UPS环境温湿度、电力输入状态、负载等数据。
图9 网点UPS监控服务
3.5 对设备硬件状态的监控
几乎所有的应用系统都是基于硬件平台运行的,现在硬件平台大多具有冗余功能,不会因为单点故障而崩溃。比如存储系统不会因为一块硬盘损坏而丢失数据;服务器不会因为一根内存条故障而宕机;刀箱不会因为一个电源故障而停止运行。但是,这种冗余功能在一定程度上又造成了硬件故障的隐蔽性,在未出现严重后果前,管理人员容易被正常的服务状态所迷惑,不能及时发现单点和修复故障。所以,为了实现对服务器硬件状态的有效监控,我们尽量选用支持SNMP进行硬件状态监控的设备,通过Nagios监控,确保能在第一时间发现和处理故障。如图10所示,该图是分行IBM刀箱的硬件状态监控图[6],在该刀箱上运行着验印、票据、邮件、OA、小前置等等生产系统,其硬件健康状态的重要性不言而喻。
图10 分行刀箱服务器硬件状态监控
4 典型成功案例
4.1 银联主线路故障报警处理
2012年3月30日10:07,分行网络管理员收到银联主线路通讯中断的报警短信,立即向中国电信报障,请求故障处理,并进入分行机房核实情况和配合维修人员。经维修人员现场检查,确定故障原因是线路尾端BNC接头老化所致,更换线路接头后故障排除,主线路恢复正常,及时消除了银联业务单线路运行的风险隐患。
4.2 上联总行电信线路延迟异常处理
2012年8月17日9:53,分行网络管理员收到上联总行电信线路延迟大于200ms的报警短信,立即登录上联路由器,发现故障线路因数据流量大导致带宽耗尽,网络延迟大,经分析发现是由于许多员工登录总行电子学习平台参与课程学习,产生大量下载流量所致,为保障营业时间业务的顺畅,立即上报总行网管人员,在营业时间内关闭电子学习平台,恢复了正常的网络传输速度,及时避免了全分行业务系统响应缓慢情况的发生。
4.3 现代支付系统异常处理
2012年9月7日20:36,分行应用系统管理员收到现代化支付系统MBFE进程异常的报警短信,立即赶赴分行中心机房,发现行内大额支付系统进程异常中止,重新启动大额支付系统进程后恢复正常。因事发当时为非营业时间,并且发现和处理及时,未对分行支付业务造成不良影响。
4.4 天府支行UPS负载异常处理
2012年12月28日9:15,分行UPS管理员收到天府支行UPS负载达到80%以上的报警短信,立即电话联系网点员工核实情况,未发现明显异常,几分钟后再次收到短信通知负载恢复正常,报警解除,但没过几分钟又再次收到负载异常报警。初步怀疑该网点UPS电源插座接入了大功率用电设备,立即赶赴现场,经检查,该网点理财柜台柜员因天气寒冷,在使用电加热器取暖时误将插头接入了UPS电源插座,导致UPS负载异常。立即对该员工予以批评并再次强调UPS电源使用规定。成功消除了该网点UPS设备因过载而停机的风险隐患。
4.5 双楠支行UPS输入异常处理
2012年7月8日周日10:22,分行UPS管理员收到报警短信,双楠支行UPS市电输入异常,立即电话联系网点员工核实是否发生停电或者跳闸现象?但该员工反映市电、开关状态均正常,UPS设备也无报警音。初步怀疑Nagios或者UPS监控模块误报,为弄清楚情况,管理员赶赴现场进行核实,发现该网点市电正常,但UPS输入开关已跳闸,UPS处于逆变输出状态,电池电压已降到192V,因UPS设备型号原因,该台UPS设备未产生声音报警,导致网点员工检查疏忽,未能正确汇报情况。合上UPS市电输入开关后,恢复对UPS设备的供电,故障排除。如果不是Nagios的正确检测及管理人员的一丝不苟,该网点员工的疏忽就将导致一场因UPS长期处于逆变输出状态,最终电池电量耗尽,网点供电终止的严重运营事故。
4.6 第五刀片服务器硬盘故障处理
2012年4月6日5:58,应用管理员收到刀箱异常的报警短信,立即赶赴中心机房查看,发现刀箱和第五刀片服务器同时亮橘黄色故障灯,登录刀箱控制台查看日志进一步核实,发现第五刀片第1槽位硬盘故障,上班后立即与厂家联系,赶赴现场及时更换了故障硬盘,消除了分行OA系统单盘运行的隐患。
4.7 邮件服务器磁盘空间不足异常处理
2012年7月18日22:19,应用系统管理员收到分行邮件服务器磁盘空间达到阀值的报警短信,立即赶赴分行机房登录邮件服务器进行处理,发现因过期日志和数据文件过多,导致已用磁盘空间达到阀值,管理员进行清理后确保了磁盘空间的充足,及时消除了因磁盘空间不足导致分行邮件系统故障的隐患。
5 结束语
综上所述,利用Nagios来构建集中监控系统是可行的,并且是非常有效的,在实践中已经得到各级单位的认可和赞同。随着时间的推移,Nagios的功能和稳定性将日臻完善,使用Nagios来构建集中监控系统的用户也会越来越多。
参考文献:
[1] Nagios Plugin Development Team.Nagios Plugins.http://
nagiosplugins.org/,2011-1-18.
[2] sery. 开源监控利器nagios实战. http://sery.blog.51cto.com/
10037/139281,2009-3-16.
[3] 21wmd. Linux开源监控平台Nagios(NRPE的安装配置). http://
21wmd.blog.51cto.com/206183/207616,2009-9-28.
[4] Cisco. How to Collect CPU Utilization on Cisco IOS Devices Using
SNMP. http://www.cisco.com/en/US/tech/tk648/tk362/
technologies_tech_note09186a0080094a94.shtml,2005-10-26.
[5] javavsnet. Nagios 简介及其二次开发. http://blog.chinaunix.net/
uid-8257165-id-3037487.html,2011-12-08.
[6] NetSeek. check_snmp一些常用服务的OID. http://bbs.linuxtone.
org/thread-6315-1-1.html,2010-5-18.