11引言

基于Nagios(何辉等,2009)、Cacti、Nagvis等开源软件的网络管理系统已于2010年在地震行业中全面应用,应用这些软件作者在天津市地震局实现了对信息网络(吉祥等,2009;董星宏等,2010)、测震、前兆、强震、GPS等业务系统中网络设备、仪器和应用系统的监控,并按业务中心、台站等区域进行了分组管理及故障联动短信息告警(宋磊等,2009),提高了业务系统的运维监控和故障影响能力,得到全局用户的认可(吴晓燕等,2009)。

但是,基于Nagios的开源网络管理系统目前存在的最大一个不足是不支持监控设备的自动发现功能,所有被监控对象、监控命令、分组情况等要素信息,全部需要手工编写成参数文件加入系统,这对于初学者和系统维护管理人员来说十分不便。为了解决这一问题,作者在工作中引入了NagiosQL开源软件,实现了对Nagios系统中的监控对象、监控命令、分组信息等配置要素的图形化管理,完成了Nagios系统配置工作的图形化,方便了用户使用,促进了开源网络管理软件在天津市地震局的进一步应用。

1 NagiosQL简介

NagiosQL开源软件是专为Nagios设计的Web模式图形化管理组件,用于管理和维护Nagios系统配置文件,实现基于数据库的配置信息管理,用户通过NagiosQL可以图形化的界面维护各类配置信息,并直接应用于系统监控,将以往繁杂的配置过程简单化、可视化。NagiosQL的主要功能包括:①具有Nagios系统配置管理能力,可导入/导出各类配置文件信息;②具有Nagios配置文件检查、排错的能力;③可对配置文件结构进行定制,可延续使用系统原有的配置结构;④能将配置信息的变更按时间戳为标志进行备份保存,实现配置信息的变更管理。

2 NagiosQL安装配置
2.1 现有Nagios系统应用情况

天津市地震局Nagios开源网络管理系统从2009年开始进行集成建设,到目前已经实现Nagios、Cacti、Nagvis、WeatherMAP、NPC、Nagios Plugin、NRPE、NDOUitils等组件的有效集成,为信息网络、测震、强震、前兆(王建国等,2010)、GPS等业务系统提供了199台主机、虚拟服务器(李刚等,2011)或设备,103项应用与服务(李刚等,2009)的统一监控,并通过二次开发,采用5端口GSM Modem实现全局故障信息的联动报警功能,图1为Nagios系统的应用结构图。

图 1 Nagios系统结构示意图 Fig. 1Structure of Nagios System
2.2 NagiosQL安装

(1)安装需求

NagiosQL系统需要MySQL、EAR Module(HTML_Template_IT)、PHP(php-gettext、php- mysql、php-ftp)和Apache(支持Javascript)等系统组件支持。

(2)配置信息目录、文件权限修改

在安装NagiosQL前,要为其建立各类配置信息存放目录并修改Nagios相应的文件权限,具体如下:

mkdir /usr/local/nagios/nagiosql
mkdir /usr/local/nagios/nagiosql/hosts
mkdir /usr/local/nagios/nagiosql/services
mkdir /usr/local/nagios/nagiosql/backup
mkdir /usr/local/nagios/nagiosql/backup/hosts
mkdir /usr/local/nagios/nagiosql/backup/services
mkdir /usr/local/nagios/nagiosql/import
chown –R nagios.www /usr/local/nagios/nagiosql
chmod –R 775 /usr/local/nagios/nagiosql
cd /usr/local/nagios
chown nagios.www cgi.cfg nagios.cfg resource.cfg
chown nagios.www /usr/local/nagios/var/spool/checkresults
‘NagiosQL目录
‘主机配置信息目录
‘服务配置信息目录
‘信息备份目录
‘主机配置信息备份目录
‘服务配置信息备份目录
‘配置信息导入目录
‘设置目录用户组属性
‘设置目录读写权限

‘修改文件用户组属性
‘修改目录属性

(3)安装NagiosQL

从www.nagiosql.org中下载最新的NagiosQL安装包,本文以3.11版为例,具体如下:

cd /srv/www/htdocs ‘进入apache网页服务目录
cp /tmp/nagiosql_311.tar.gz .   ‘将NagiosQL源文件拷贝到此目录中
tar vxfz nagiosql_311.tar.gz   ‘解压
cd /srv/www/htdocs/nagiosql/install/
touch ENABLE_INSTALLER ‘创建ENABLE_INSTALLER文件,该文件启用安装向导
chomd –R 777 /srv/www/htdocs/nagiosql/config ‘修改config目录属性

修改php.ini文件,确认suhosin.session.encrypt=0,注意,修改php.ini文件后要重新启apache服务。

完成上述配置后,可以通过http://服务器IP地址/nagiosql打开NagiosQL的安装界面,之后通过4个页面的提示完成安装,其分别为:

①基本安装条件提示:提示安装NagiosQL所需要的基本软件要求;

②检查安装环境:检查安装NagiosQL所需的基本条件是否符合,在满足所有必须条件后,才可进行安装;

③安装并创建数据库:安装NagiosQL,创建所需的数据库,并设置其它信息;

④安装结果:提示安装是否成功。

注意:如果安装正常,则要将/srv/www/htdocs/nagiosql/install目录删除,防止登录NagiosQL系统时重新进入安装程序。

2.3 NagiosQL初始配置

安装完成后,通过http://服务器IP地址/nagiosql登录NagiosQL系统。

(1)设置域属性

选择[管理]→[域]→[localhost]打开域管理窗口,根据2.2节建立的目录等信息填写所要求内容,填写完成后,保存退出。

(2)导入Nagios配置信息

选择[工具]→[导入数据]打开数据导入窗口,按照命令→时长→联系人模板→联系人→联系组→主机模板→主机→主机组→服务模板→服务服务组的顺序将各配置文件导入NagiosQL。

(3)重新写入Nagios配置信息

通过NagiosQL中的[监督]、[警告]、[命令]三项菜单,将第2步导入的Nagios配置信息以NagiosQL的格式重新写回Nagios系统。

(4)修改nagios.cfg文件信息

将nagios.cfg文件中原有的cfg_file和cfg_dir全部用#号注释,并加入如下配置信息:

cfg_dir=/usr/local/nagios/nagiosql/hosts/
cfg_dir=/usr/local/nagios/nagiosql/services/
cfg_file=/usr/local/nagios/nagiosql/commands.cfg
cfg_file=/usr/local/nagios/nagiosql/contactgroups.cfg
cfg_file=/usr/local/nagios/nagiosql/contacts.cfg
cfg_file=/usr/local/nagios/nagiosql/contacttemplates.cfg
cfg_file=/usr/local/nagios/nagiosql/hostdependencies.cfg
cfg_file=/usr/local/nagios/nagiosql/hostescalations.cfg
cfg_file=/usr/local/nagios/nagiosql/hostextinfo.cfg
cfg_file=/usr/local/nagios/nagiosql/hostgroups.cfg
cfg_file=/usr/local/nagios/nagiosql/hosttemplates.cfg
cfg_file=/usr/local/nagios/nagiosql/servicedependencies.cfg
cfg_file=/usr/local/nagios/nagiosql/serviceescalations.cfg
cfg_file=/usr/local/nagios/nagiosql/serviceextinfo.cfg
cfg_file=/usr/local/nagios/nagiosql/servicegroups.cfg
cfg_file=/usr/local/nagios/nagiosql/servicetemplates.cfg
cfg_file=/usr/local/nagios/nagiosql/timeperiods.cfg

修改完成后,通过如下命令检查Nagios配置,如系统无错误提示,则实现了采用NagiosQL来管理Nagios配置信息的功能,此后所有Nagios配置信息都可以通过NagiosQL来进行可视化的管理。

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg ‘配置检测命令

3 NagiosQL集成应用

配置好NagiosQL后,可以通过其来管理Nagios的各类配置信息。下面主要说明添加主机、服务和命令等信息,以及检测Nagios配置信息的方法。

3.1 添加主机监控信息

通过[监督]→[host]→[添加]的顺序打开主机添加窗口,如图2所示。填写主机名、描述、地址信息,选择主机所属父对象、主机所属管理组、采用的监控命令以及监控模板等信息,点击[保存]按钮,并将新添加的主机信息写入数据库。

3.2 添加服务监控信息

通过[监督]→[服务]→[添加]的顺序打开服务添加窗口,如图3所示。填写服务配置名称、服务描述名称,并选择服务所属主机、所属服务分组、服务检测命令和服务模板等信息后,点击[保存]按钮,并将新添加的服务信息写入数据库。

3.3 添加监控命令

通过[命令]→[定义]→[添加]的顺序打开命令定义窗口,如图4所示。输入命令名称、命令行,并将选择命令状态为[活动],保存信息,并命令信息写入数据库。

图 2 主机监控信息 Fig. 2Monitoring information of hosts
图 3 服务监控信息 Fig. 3Monitoring information of services
图 4 监控命令信息 Fig. 4Monitoring commands information
3.4 检测Nagios配置信息,并应用于监控系统

通过[工具][Nagios控制],进入信息检查与Nagios控制窗口,选择[检测配置文件],可以检测Nagios配置信息的正确性,如果没有错误提示,即可通过[重新启动Nagios]选项,将配置信息应用到Nagios系统的监控中。

4 应用分析

在使用NagiosQL后,提高了天津市地震局Nagios网管系统整体的运行管理能力,但也发现其有待改进的地方,主要表现在以下几点。

4.1 实现可视化的配置管理,提升系统易用性

NagiosQL将Nagios系统的配置信息管理方式从文本编写模式变更为Web图形界面填写模式,实现了设备、服务、人员、分组等信息的可视化管理,提升了配置信息管理的效率和系统的易用性。

4.2 系统监控指令扩展更易实现

Nagios监控系统一个重要的优点就是其监控指令的多样性,用户可以编写不同的监控脚本来扩展系统的监控能力,但是在采用文本配置方式中,调试一个监控命令较为繁琐,需要多次在不同配置文件中进行修改调整,NagiosQL可以在图形界面中快速完成监控指令的调试,使命令体系的扩展更为简结。

4.3 配置信息结构化管理,易于进行二次开发工作

NagiosQL将各类配置信息存在数据库中,实现结构化管理,提高了配置信息的共享能力,有利于进行各类二次开发工作,这也为实现Nagios系统与CMDB(配置管理数据库)的结合打开了便捷之路。

4.4 一体化配置工作有待增加

NagiosQL虽然可以通过Web方式进行可视化的填写模式完成配置信息的管理维护,但是其在主机、服务、监控命令等信息的管理上,还是采用单一管理模式,每种信息通过独立窗口进行配置,不能实现在同一界面中多类信息的一体化配置,这是软件系统的一个欠缺之处,有待增强。

5 结语

NagiosQL采用Web方式的图形化界面实现了对Nagios配置信息的结构化管理,目前对199台设备,103项服务的配置系统进行了管理,提升了Nagios系统配置管理的便捷性,对于推进Nagios等开源网络管理系统在行业中的应用产生了积极作用,NagiosQL与Nagios系统的集成应用,再一次说明了开源软件系统的扩展性灵活。NagiosQL采用数据库系统对配置信息进行了管理,并与oneCMDB系统(开源配置管理数据库)有集成应用的接口,为后期实现基于开源软件的运维管理系统建设提供了一定的参考与应用。今后,我们将对以Nagios为核心的开源网络管理系统进行更为深入的研究、开发与应用,使其在地震行业中发挥更为重要的作用。

致谢:本项工作得到了天津市地震局应急信息中心全体人员的大力帮助与配合,在此表示感谢。

参考文献
[1]何辉,权晓红,石全民等,2009.自主设计网管系统——开源软件以及自由软件应用于网络管理方案. 中国教育网络,(6):42—47[本文引用:1次]
[2]吉祥,赵静,张淑贤等,2009.宁夏数字地震观测网络项目之网络设计与综合评价. 震灾防御技术,4(3):355—361[本文引用:1次]
[3]董星宏,贾宁,2010.陕西地震信息网地震速报信息对外快速发布技术研究. 震灾防御技术,5(4):506—512[本文引用:1次]
[4]宋磊,王静文,2009.OpenBSD下基于Nagios的网络服务监控报警系统的研究. 电脑编程技巧与维护,(14):112—113[本文引用:1次]
[5]吴晓燕,周海生,吉祥,2009.Nagios在网络管理工作中的应用与探讨. 高原地震,22(3):58—60[本文引用:1次]
[6]王建国,姚会琴,高逊等,2010.天津市地震前兆台网的运行监控与维护管理. 大地测量与地球动力学,30(增刊1):111—115[本文引用:1次]
[7]李刚,周利霞,王晓磊等,2011.基于VMware Esxi软件的服务器虚拟化技术在天津地震监测网络中的应用. 震灾防御技术,6(3):311—318[本文引用:1次]
[8]李刚,周利霞,王晓磊等,2009.高速区域网络环境中的网站负载均衡系统. 西北地震学报,31(3):296—301[本文引用:1次]