应用开源OpenNMS实现网络监控和报警①

2019-08-16 09:09谢旖欣李子川李飞宇
计算机系统应用 2019年7期
关键词:备份开源邮件

谢旖欣,李子川,李飞宇

(湖南省疾病预防控制中心,长沙 410005)

湖南省疾控中心机房,除负责本单位内部网络和应用系统外,还部署了全省疾控三级平台和全省免疫规划系统的软、硬件系统,承担国家、省级、市级、县级四级疾控中心及全省各类疾控业务系统的网络连通、业务纽带和安全守护职能.湖南省疾控数据中心自建成以来一直在不断优化管理和监控,但软、硬件设备仍然比较欠缺,再加上机房建成时部署的酷点网络监控软件license 已经过期,原运维公司倒闭,继续使用和运维成本较高,重新招标商业网管软件时间成本也比较高,在短时间内只能先考虑开源软件,尽快部署实施.

为实现业务信息系统数据的自动备份、保存和还原,于2017年,数据中心采购部署了HP DP 软件.经过一段时间的使用后发现软件报警信息都只能显示在软件内部日志中,延误发现故障时机,多次造成了更广泛的系统瘫痪和业务中断.虽然软件自带有报告和通知报警功能,但HP DP 部署在内网,无法向外界发送报警.出于投入产出比的考虑,湖南省疾控数据中心暂时还没有配备短信网关、私有邮件服务器,HP DP 无法通过短信网关和私有邮件服务器直接发送报警.为了提前发现并解决故障,笔者考虑使用网络监控软件接收SNMP,然后转发报警信息,研究低成本下如何实现故障报告向系统外实时报警功能,最后结合OpenNMS很好的解决了这一问题.

1 开源软件选型和OpenNMS 概述

在网络监控软件领域,以往都是商业软件的天下,主要有BMC Patrol、CA Unicenter、HP View 或IBM Tivoli,这些软件动辄花费百万美元级的开销,而很多小型公司和IT 部门根本无力承担.而开源网管软件不仅具有价格优势,其定制灵活,功能多样,大多有活跃的开源社区作为技术支持,并且很多开源软件都有官方的商业技术支持,各大客户反响良好[1].在开源运动的驱动下,网络管理软件市场涌现了很多优秀的开源软件.

最常用的开源网络管理软件有例如:Nagios、Hyperic HQ、Zabbix、Cacti、OpenNMS、Zenoss 等.

选择哪一种开源软件需要根据自身的需求和条件进行选择,而且选择了一种开源软件也就选择了一种架构,所以架构的选择也要结合数据中心工程们的开发运维能力,为后期二次开发做准备.

根据前期对各种论文和网络资料的分析,OpenNMS在License 限制、市场占用率、功能、二次开发等方面都具有比较明显的优势.市场占有率方面,Nagios和opennms 应用的比较广,也意味着更多的资料可以获取,更多的经验可以借鉴.但是Nagios 没有配置界面,配置需要直接修改配置文件.OpenNMS 是基于java 的,Web 管理界面是基于JSP/Servlet,Spring MVC,二次开发门槛低.OpenNMS 为世界第一款企业级开源的基于开源协议开发的网络管理软件,能监控分布式的异构系统和网络设备的运行状态,支持SNMP 网络管理协议,确保管理的扩展性,功能全面,并且提供非常灵活的定制功能,从而有利于管理范围的伸缩[2-8].而且OpenNMS 在其他数据中心也有过较成功的应用先例[7].各软件都能实现网络管理的基本功能,表1只列出了各软件有差异的几项功能参数,功能均相同的未列出.表2列出了综合评分比较情况.

表1 各软件功能主要差异项对比

表2 各软件综合对比小结

OpenNMS 的体系架构一共分为4 层,分别为被管理层,监控引擎处理层,数据存储层,图形界面用户层.被管理层分为3 种类型:一种是被管理设备;一种是被管理服务,各服务如HTTP,TCP,ICMP 等可被随时监控服务是否正常运行;一种是数据库,管理端通过实时监控数据库的活动以及对数据库的通信内容进行判别、分析和判断,若有异常及时报警并显示报警原因.监控引擎处理层通过定时轮询设备及服务,采集数据信息,实时更新数据库来及时对底层数据进行更新和监控,一旦发现异常,执行报警行为.数据存储层为OpenNMS 存储设备信息和参数信息的地方,采用的数据库为PostgreSQL 和RRD.用户图形界面层,用简洁易操作的图形界面给用户提供一个使用平台.如图1所示是OpenNMS 的架构图[8].

图1 OpenNMS 架构图

2 网络监控及实时报警实现思路

在数据中心的现实条件下,没有私有邮件服务器和短信网关向外网及时报警,一种简单的解决方案是增加私有邮件服务器或短信网关.但是如果由应用直接向外网报警,无法全局总览运行和报警情况,最好是各应用向网络管理软件发送报警信息,由网络管理软件统一存储、转发报警信息,这样既能及时向外报警,又能集中将所有的报警信息都分类归档存储,便于监控和后期分析.所以我们采用的方式是搭建部署OpenNMS,OpenNMS 既可以主动监测各节点故障和性能,又可以接收各应用主动通过SNMP 发送的报警信息.

OpenNMS 官方文档建议在linux 环境下开发、部署、使用,社区和大部分网络资料也都是介绍在linux 环境下部署使用的,一般来说在linux 环境下部署能得到更好的技术支持.另外依据官方说明,OpenNMS 自1.3.8 版本后,已经支持在windows 平台下运行.windows 环境下的安装和运维都更方便快捷,为了更快的部署实验评估效果,数据中心首先选择在windows server 2008 操作系统下部署OpenNMS,待实验和运行评估效果后再考虑是否迁移到linux 环境.

网上有OpenNMS 在windows 环境下的安装包,安装包下载地址:https://sourceforge.net/projects/opennmszh/files/en/,安装环境支持当前主流Windows 操作系统,支持64 位操作系统.

笔者用OpenNMS 实现了以下功能:

(1) 网络节点自动发现和集中管理.通过OpenNMS 对设备进行集中管理,如添加或删除设备及服务.

(2) 图形用户管理界面.

(3) 实时监控.对设备的运行状态进行实时监控,采集设备的性能值,存储到数据库.OpenNMS 可以管理的对象包括:1)支持SNMP 网管的网络设备;2)部署了SNMP 服务的服务器上的操作系统.

(4) 故障事件管理.IT 运维管理人员所关注的问题,如系统资源出现短缺、数据库连接失败、网络通信中断、主机文件系统溢出等都会以事件的形式表现出来.

(5) 故障报警.当监测到设备有异常时,系统发送报警信息,通知给管理员.

(6) 操作系统监控.

(7) 网络节点配置信息管理.对设备进行配置,包括监控配置和参数配置;对系统进行管理配置,包括数据采集、轮询、报警的具体方式等.被监控对象节点在数据库中的配置信息也是IT 设备的资产信息,每个网络节点都是一个特定的IT 资产设备.

3 HP DP 通过SNMP Trap 发送报告和通知

HP Data Protector 是惠普公司推出的一款为快速增长的业务数据提供可靠的数据保护和高度可访问性的备份解决方案.

HP Data Protector 是完全的Client/Server 结构.它把整个备份环境分成多个独立的逻辑单元,如下图所示,多个逻辑单元可组合成有机整体,并服从中心节点的管理.逻辑单元主要包括备份客户机(Backup Agent)或应用客户机(Application Agent),设备服务器(Media Agent,MA),备份服务器(Cell Manager,CM),用户管理终端.备份客户机和应用客户机可以统一归类为数据客户(Disk Agent,DA).备份服务器安装并运行HP DP 软件,拥有一个存储各种备份信息的内部数据库(Internal Database,IDB).图2展示了数据中心HP DP 备份环境[9].

图2 数据中心HP DP 备份环境

HP DP 的报告模块提供有关备份环境的各种信息.例如,可以检查上一次备份、对象复制、对象合并或对象验证的状态,检查网络中的哪些系统没有针对备份进行过配置,检查介质池中介质的使用量,检查设备的状态等.

HP DP 的通知模块可在发生特定事件时从CM 发送通知.例如,备份、对象复制、对象合并或对象验证会话完成后,可以发送含有会话状态的电子邮件.

报告发送方法包括:广播消息发送、电子邮件发送、SMTP 发送、外部发送、记录到文件发送、SNMP 发送,通知发送方法比报告发送方法多了两个方法:DP 事件日志方法、使用报告组发送方法.

通过SNMP 发送方法,可在发生指定事件时由CM 发送含有报告或通知输出的SNMP Trap.该SNMP Trap 可由应用程序使用各种SNMP Trap 进一步处理.

数据中心的CM 运行在HP-UX 系统中,通过配置/etc/snmpd.conf 文件设置SNMP Trap 社区名和Trap 目标,Trap 目标可以是主机名也可以是IP 地址.在报告或通知的SNMP 发送对象中填写/etc/snmpd.conf 中配置的Trap 目标,即可将报告或通知的SNMP Trap 发送到指定目标.

4 OpenNMS 事件配置并发送邮件

OpenNMS 包括一个强有力的事件通知系统,OpenNMS 管理事件通知的进程是eventd.主要有两种类型的事件:由OpenNMS 内部产生的事件和通过外部的SNMP trap 产生的事件.OpenNMS 的事件可以伴随一个通知,特别的事件可能通过页面或Email,SMS等方式发出一个通知.本文以监控并转发HP DP 的SNMP 信息为例演示OpenNMS 的事件、通知配置.

4.1 在OpenNMS 中配置HP DP 节点的SNMP

在OpenNMS 的admin 菜单项的Configure OpenNMS 界面,选择Configure SNMP Community Names by IP Address 菜单项.在这个菜单界面下可以设置采集对象的SNMP 版本、读/写社区名称等配置信息.如果版本信息和读/写社区名称不对,将无法正确采集到SNMP 信息.

4.2 为HP DP 配置SNMP Trap 事件

4.2.1 可视化配置

在admin->Configure OpenNMS 菜单的Manage Events Configuration 界面可以可视化的配置事件,也可以直接通过XML 文件配置事件.

4.2.2 配置文件配置

事件配置的主要文件位于$OPENNMS_HOME/etc与$OPENNMS_HOME/etc/events 目录下.eventconf.xml.定义通用事件识别码(Universal Event Identifiers或UEIs)以及它们的事件屏蔽(masks)、描述、记录文件信息和严重程度.自定义事件在OpenNMS 也叫企业事件,自定义事件的配置文件常常命名为*.events.xml 的形式,*代表自定义事件名称.自定义事件配置文件存放在$OPENNMS_HOME/etc/events 目录下.

配置文件中各标签和变量的具体用法可参考OpenNMS 官方指南[10].

手动更改eventconx.xml 或其任何配置文件后,需要重启OpenNMS 服务才能生效.根据官方指南手册可以在OpenNMS Horizon 服务器上发出以下命令,触发事件配置的重新加载:OPENNMS_HOME/bin/sendevent.pl uei.opennms.org/internal/reloadDaemonConfig -p 'daemonName Eventd'.但是笔者在windows 安装版中没有找到send-event 文件,可能只支持linux 安装版.

重新加载配置后OpenNMS 就可以接收到HP DP 的SNMP trap 事件了.如图3所示为OpenNMS 接收到HP DP 的SNMP trap 事件示例.

图3 OpenNMS 接收到HP DP 的SNMP trap 事件示例

4.3 发送邮件配置

(1) 开启通知状态

在菜单选项Admin-> Configure OpenNMS 中将Notification Status 设置为on.

(2) 配置通知策略

在菜单Configure OpenNMS -> Configure Notifications -> Configure Destination Paths 中按向导设置通知的目标路径.由于数据中心暂时没有私有的SMTP 邮件服务器,所以这里只能借助商用的(笔者选择的是腾讯邮件服务),然后通过javaEmail 方式发送.给用户发送邮件的前提是在系统用户配置中给用户设置了邮件地址.

邮件通知策略配置文件:$OPENNMS_HOME/etc/javamail-configuration.properties.图4是以腾讯邮件服务器为例的javamail-configuration.properties 文件示例.

(3) 配置发送通知的事件

在菜单选项Admin-> Configure OpenNMS ->Configure Notifications -> Configure Event Notifications中新增一个Event Notication,按向导配置事件通知.

配置完成后管理员就可以接收到HP DP 的报告和报警邮件了.

图4 javamail-configuration.properties 文件示例

5 OpenNMS 在数据中心的应用及问题

目前数据中心在其内部交换网络和服务器群中部署了一台OpenNMS 系统,对70 多台服务器(包括虚拟机)及网络设备节点进行实施监控.此次实施中没有增加新的硬件设备,开源软件也没有投入资金成本,极大的节省了数据中心的开支.OpenNMS 针对节点的类型自动生成相应的监控报表和事件通知邮件.运用了OpenNMS 后,有利于管理员对IT 运行状态进行日常监控和分析,及时发现了网络设备瓶颈,多次实时邮件报警HP DP 备份故障,及时发现故障点,为尽早解决问题争取了时间.

图5展示了OpenNMS 监控主页,可以总览被监控节点的总体运行状况.图6展示了以HP 小机为例的节点监控情况,可以总览特定节点的运行状况.OpenNMS 可以图形化动态展示被监控节点的CPU、内存、端口流量等多种性能参数,图7以HP 小机CPU为例展示了监控效果图.图8截取了OpenNMS 每日定时以电子邮件方式发送HP DP 会话完成情况的部分邮 件列表.

图5 OpenNMS 监控主页

图6 HP 小机监控页面

但在实际运行中,也遇到一些问题,比较突出的是安装的这一版本还有一些Bug,与官方指南手册的说明也有一定出入,而且无法兼容中文,各报警邮件只能英文显示,邮件中的中文均为乱码.下一步将继续深入研究OpenNMS 的源码,弄懂其原理,寻找解决各种Bug 的方法.在适当的时候编译自己的安装版本,并且安 装到linux 环境下,使运行更稳定.

图7 HP 小机CPU 监控效果图

图8 OpenNMS 每日定时以电子邮件方式发送HP DP会话完成情况

6 结论与展望

在缺少短信网关和私有邮件服务器,同时经费又有限的情况下,对于内网的一些应用报警,笔者没有局限于对经费的等、靠、要等依赖,而是借用OpenNMS的SNMP Trap 接收和邮件报警功能以几乎零成本实现内网应用的邮件报警功能.使用OpenNMS 不仅很好的解决了之前HP DP 报警不及时的问题,也使各种IT 设备得到了实时监控,对数据中心整体运行状况有很好的掌握.相比于以前使用的收费网络管理软件,以后可以通过开源社区和自己研究源代码来改进一些问题,比商用软件更灵活,解决问题更有针对性和个性化,同时更有利于管理和运维人员对自己管理对象的了解和技术能力的提高.基于开源的精神,也将把一些研究成果向开源社区共享,共同进步.

猜你喜欢
备份开源邮件
基于James的院内邮件管理系统的实现
利用云备份微信聊天记录
来自朋友的邮件
如何只备份有用数据而不备份垃圾数据
Windows10应用信息备份与恢复
五毛钱能买多少头牛
2019开源杰出贡献奖
一封邮件引发的梅赛德斯反弹
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0