第 7 卷第 2 期 2012 年 6 月 震灾防御技术 Technology for Earthquake Disaster Prevention Vol. 7, No. 2 Jun., 2012 李刚, 刘磊, 周利霞, 王晓磊, 齐士超, 杨奕,2012.NagiosQL 软件在开源网络管理系统中的应用. 震灾防御技术,7(2):193 199. NagiosQL 软件在开源网络管理 系统中的应用 1 李刚 刘磊周利霞王晓磊齐士超杨奕 ( 天津市地震局, 天津 300201) 摘要 NagiosQL 开源软件, 实现了对 Nagios 系统的监控对象 监控命令 分组信息等配置要素的图形化管理工作, 方便了 Nagios 系统的进一步深入应用 本文阐述 NagiosQL 软件在天津市地震局开源网络管理系统中的应用, 包括与 Nagios 系统的集成 联调和使用情况, 是开源软件在地震行业中新的应用参考 关键词 : 网络软件 Nagios NagiosQL 引言 基于 Nagios( 何辉等,2009) Cacti Nagvis 等开源软件的网络管理系统已于 2010 年在地震行业中全面应用, 应用这些软件作者在天津市地震局实现了对信息网络 ( 吉祥等,2009; 董星宏等,2010) 测震 前兆 强震 GPS 等业务系统中网络设备 仪器和应用系统的监控, 并按业务中心 台站等区域进行了分组管理及故障联动短信息告警 ( 宋磊等,2009), 提高了业务系统的运维监控和故障影响能力, 得到全局用户的认可 ( 吴晓燕等,2009) 但是, 基于 Nagios 的开源网络管理系统目前存在的最大一个不足是不支持监控设备的自动发现功能, 所有被监控对象 监控命令 分组情况等要素信息, 全部需要手工编写成参数文件加入系统, 这对于初学者和系统维护管理人员来说十分不便 为了解决这一问题, 作者在工作中引入了 NagiosQL 开源软件, 实现了对 Nagios 系统中的监控对象 监控命令 分组信息等配置要素的图形化管理, 完成了 Nagios 系统配置工作的图形化, 方便了用户使用, 促进了开源网络管理软件在天津市地震局的进一步应用 1 NagiosQL 简介 NagiosQL 开源软件是专为 Nagios 设计的 Web 模式图形化管理组件, 用于管理和维护 Nagios 系统配置文件, 实现基于数据库的配置信息管理, 用户通过 NagiosQL 可以图形化的 1 基金项目地震科技星火项目 基于开源软件的地震业务系统运行状态监控技术深入研究与应用 (XH1002Y) [ 收稿日期 ] 2011-12-25 [ 作者简介 ] 李刚, 男, 生于 1978 年 工程师 主要从事地震信息网络规划管理与建设工作 E-mail: ligang@tjdzj.com
194 震灾防御技术 7 卷 界面维护各类配置信息, 并直接应用于系统监控, 将以往繁杂的配置过程简单化 可视化 NagiosQL 的主要功能包括 :1 具有 Nagios 系统配置管理能力, 可导入 / 导出各类配置文件信息 ;2 具有 Nagios 配置文件检查 排错的能力 ;3 可对配置文件结构进行定制, 可延续使用系统原有的配置结构 ;4 能将配置信息的变更按时间戳为标志进行备份保存, 实现配置信息的变更管理 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. 1 Structure 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 NagiosQL 目录 mkdir /usr/local/nagios/nagiosql/hosts 主机配置信息目录
2 期李刚等 :NagiosQL 软件在开源网络管理系统中的应用 195 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 修改目录属性 (3) 安装 NagiosQL 从 www.nagiosql.org 中下载最新的 NagiosQL 安装包, 本文以 3.11 版为例, 具体如下 : cd /srv/www/htdocs cp /tmp/nagiosql_311.tar.gz. tar vxfz nagiosql_311.tar.gz 进入 apache 网页服务目录 将 NagiosQL 源文件拷贝到此目录中 解压 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 个页面的提示完成安装, 其分别为 : 1 基本安装条件提示 : 提示安装 NagiosQL 所需要的基本软件要求 ; 2 检查安装环境 : 检查安装 NagiosQL 所需的基本条件是否符合, 在满足所有必须条件后, 才可进行安装 ; 3 安装并创建数据库 : 安装 NagiosQL, 创建所需的数据库, 并设置其它信息 ; 4 安装结果 : 提示安装是否成功 注意 : 如果安装正常, 则要将 /srv/www/htdocs/nagiosql/install 目录删除, 防止登录 NagiosQL 系统时重新进入安装程序 2.3 NagiosQL 初始配置安装完成后, 通过 http:// 服务器 IP 地址 /nagiosql 登录 NagiosQL 系统 (1) 设置域属性选择 [ 管理 ] >[ 域 ] >[localhost] 打开域管理窗口, 根据 2.2 节建立的目录等信息填写所要求内容, 填写完成后, 保存退出 (2) 导入 Nagios 配置信息选择 [ 工具 ] >[ 导入数据 ] 打开数据导入窗口, 按照命令 > 时长 > 联系人模板 > 联系人 > 联系组 > 主机模板 > 主机 > 主机组 > 服务模板 > 服务 > 服务组的顺序将各配置文件导入 NagiosQL (3) 重新写入 Nagios 配置信息
196 震灾防御技术 7 卷 通过 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 期李刚等 :NagiosQL 软件在开源网络管理系统中的应用 197 名称 命令行, 并将选择命令状态为 [ 活动 ], 保存信息, 并命令信息写入数据库 图 2 主机监控信息 Fig. 2 Monitoring information of hosts 图 3 服务监控信息 Fig. 3 Monitoring information of services 图 4 监控命令信息
198 震灾防御技术 7 卷 Fig. 4 Monitoring 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 为核心的开源网络管理系统进行更为深入的研究 开发与应用, 使其在地震行业中发挥更为重要的作用 致谢 : 本项工作得到了天津市地震局应急信息中心全体人员的大力帮助与配合, 在此表
2 期 李刚等 :NagiosQL 软件在开源网络管理系统中的应用 199 示感谢 参考文献 何辉, 权晓红, 石全民等,2009. 自主设计网管系统 开源软件以及自由软件应用于网络管理方案. 中国教育网络,(6):42 47. 吉祥, 赵静, 张淑贤等,2009. 宁夏数字地震观测网络项目之网络设计与综合评价. 震灾防御技术,4(3): 355 361. 董星宏, 贾宁,2010. 陕西地震信息网地震速报信息对外快速发布技术研究. 震灾防御技术,5(4): 506 512. 宋磊, 王静文,2009.OpenBSD 下基于 Nagios 的网络服务监控报警系统的研究. 电脑编程技巧与维护, (14): 112 113. 吴晓燕, 周海生, 吉祥,2009. Nagios 在网络管理工作中的应用与探讨. 高原地震,22(3): 58 60. 王建国, 姚会琴, 高逊等,2010. 天津市地震前兆台网的运行监控与维护管理. 大地测量与地球动力学,30 ( 增刊 1): 111 115. 李刚, 周利霞, 王晓磊等,2011. 基于 VMware Esxi 软件的服务器虚拟化技术在天津地震监测网络中的应用. 震灾防御技术,6(3): 311 318. 李刚, 周利霞, 王晓磊等,2009. 高速区域网络环境中的网站负载均衡系统. 西北地震学报,31(3): 296 301. Application of NagiosQL Software in Open Source Network Management System Li Gang, Liu Lei, Zhou Lixia, Wang Xiaolei, Qi Shichao and Yang Yi (Earthquake Administration of Tianjin Municipality, Tianjin 300201, China) Abstract Monitor objects, monitor command, grouping information and other configuration elements in Nagios system are graphed by NagiosQL open source software to facilitate further application of Nagios system. The application of NagiosQL software in Tianjin open source network management system, has been expressed, including integration, joint debugging and use with Nagios system. It is the first time to apply open source software in the earthquake monitoring network. Key words: Network; Software; Nagios; NagiosQL