zhuhaiqiang
作者zhuhaiqiang·2020-02-06 16:58
项目经理·银行

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

字数 6667阅读 4056评论 0赞 1

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

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

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

最常用的开源网络管理软件有例如: Nagios、Hyperic HQ、Zabbix、Cacti、OpenNMS、Zenoss等. 选择哪一种开源软件需要根据自身的需求和条件进行选择, 而且选择了一种开源软件也就选择了一种架构, 所以架构的选择也要结合数据中心工程们的开发运维能力, 为后期二次开发做准备.

根据前期对各种论文和网络资料的分析, OpenNMS在License限制、市场占用率、功能、二次开发等方面都具有比较明显的优势. 市场占有率方面, Nagios和opennms应用的比较广, 也意味着更多的资料可以获取, 更多的经验可以借鉴. 但是Nagios没有配置界面, 配置需要直接修改配置文件. OpenNMS是基于java的, Web管理界面是基于JSP/Servlet, Spring MVC, 二次开发门槛低. OpenNMS为世界第一款企业级开源的基于开源协议开发的网络管理软件, 能监控分布式的异构系统和网络设备的运行状态, 支持SNMP网络管理协议, 确保管理的扩展性, 功能全面, 并且提供非常灵活的定制功能, 从而有利于管理范围的伸缩. 而且OpenNMS在其他数据中心也有过较成功的应用先例. 各软件都能实现网络管理的基本功能, [表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 配置文件配置 事件配置的主要文件位于 O P E N N M S H O M E / e t c 与

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/send-event.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设备得到了实时监控, 对数据中心整体运行状况有很好的掌握. 相比于以前使用的收费网络管理软件, 以后可以通过开源社区和自己研究源代码来改进一些问题, 比商用软件更灵活, 解决问题更有针对性和个性化, 同时更有利于管理和运维人员对自己管理对象的了解和技术能力的提高. 基于开源的精神, 也将把一些研究成果向开源社区共享, 共同进步.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广