首页 > 范文大全 > 正文

基于Nagios的网络监控系统研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Nagios的网络监控系统研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:采用软件工程中的原型法、并发开发法和试验法,通过程序设计、服务配置以及设定相应的阀值对主机和服务进行监控,在状态变差或变好的时候给出告知信息,实现对整个校园网络,特别针对宿舍网络计费服务器集群、SAM自助服务器、宿舍网核心交换机等设备的状态监控;实现故障、异常等信息以e-mail等方式自动发送,及时通知系统管理员,最终达到对校园网络服务器的预警监控。

关键词:网络监控;服务器集群;Nagios

中图分类号:TP393 文献标识码:A文章编号:1009-3044(2010)01-48-04

The Research of Network Monitoring System Based on Nagios

LV Wei-chun, HU Hong-xin, TANG Jian

(Development and Information, Suzhou Vocational University, Suzhou 215104, China)

Abstract: The paper adopts the prototyping, experimental method and concurrent development method in the software engineering, combine the research and analysis of the open-source software, use the related programme design, the configuration of services and the set conditions to monitor the host and services to give the warning when the conditions are becoming bad or good so as to monitor the whole campus network, particularly the surveillance monitoring, protocol analysis and log analysis of the dormitory network accounting server clusters, SAM self-server, and regional convergence to fulfill the automatic sending of the malfunction and abnormal information by email to inform the system administrator so that eventually the warning and surveillance to the campus network is eventually fulfilled.

Key words: network monitoring; server cluster; Nagios

Nagios是基于Linux的主机、服务以及网络的监控软件,是基于GNU的开放源代码的一套完整的程序。nagios的配置非常快速,维护简便,可以在你根据实际情况设定的条件对主机和服务进行监控,在各项状态发生变化达到一定程度时给出告警信息,通过多种渠道通知网络管理员。

1 Nagios系统的设计目标

Nagios监测系统设计主要有以下几个目标

1)状态监测的准确性和完整性

2)监控网络服务(SMTP, POP3, HTTP, PING等)

3)实用性强

4)应能满足实际应用的需要。能够针对不同的网络结构采取不同的方法,灵活地监控网络服务特征。

5)集群服务器的监控

6)监控主机资源(CPU负载,磁盘空间等)

7)多种报警方式

8)要求整个系统层次清楚,便于维护。基于WEB的用户界面只要在可以浏览WEB的地方都可以使用,不需要安装客户端程序。在维护或升级系统时,只需要维护WEB服务器的程序代码。

2 Nagios系统总体架构

Nagios系统运行在中心服务器上,系统采用Ubuntu 8.04.2 Server。每一台需要监视的设备都会运行一个与Nagios进行通信的后台程序。Nagios根据读取的配置文件中的指令与远程的守护程序进行联系,并且指示远程的守护程序进行必要的检查。虽然这个应用程序必须在Linux或者Unix操作系统上运行,但被监视的设备可以是任何能够与其进行通信的硬件。

Nagios系统结构是监控系统中最复杂的,但Nagios同时也可以非常容易地与现有框架集成,因此Nagios被广泛地应用。通过很多种方式与现有系统管理软件进行集成,完善管理软件,从而监控你所拥有的各类新型或用户定制的设备硬件、应用服务或是应用程序。

3 Nagios 系统设计

Nagios主要对网络应用服务器的各种运行状态进行监测,目前已在校宿舍网络SAM计费服务器集群、自助服务器以及该系统服务器自身状态进行监测。

3.1 Nagios系统配置说明

1)日志文件

日志文件,是用来记录主机活动事件的主要日志文件,是配置文件中在最前面的。

log_file=/var/log/nagios/nagios.log //设定Nagios的主日志文件路径。

2) 对象配置文件模块

对象配置文件,这些配置文件包含主机、主机组、联系人、联系人组、服务等信息的定义和配置。Nagios将会读取并处理这些配置文件中相关内容所记载的定义。

cfg_file=/etc/nagios/commands.cfg //设定命令配置文件路径信息。

以下是一些扩展的主机/服务信息定义配置文件。

#cfg_file=/etc/nagios/hostextinfo.cfg

#cfg_file=/etc/nagios/serviceextinfo.cfg

3.2 监控Windows服务器配置

监控Windows服务必须在被监控端装有插件程序,我校监控系统对所有windows服务器上安装nsclient++0.3.6,下载地址/x-0.3.x/NSClient%2B%2B-0.3.6-RC8-Win32.zip,解压后拷贝到c盘根目录。

1)nagios服务器的配置

root@sz-yunfan:~# vi /usr/local/nagios/etc/nagios.cfg

#cfg_file=/usr/local/nagios/etc/objects/windows.cfg //启用这个配置,保存并退出。

2)Windows服务器的配置

打开命令窗口,进入到刚才解压的目录,在命令行界面运行 nsclient++ /install,再运行nsclient++ SysTray。

在[modules]选项里,启用所有注释的配置命令,但保留 CheckWMI.dll和RemoteConfiguration.dll的注释。

4)更改[Settings]选项

修改allowd_host=172.17.1.100//nagios服务器的ip地址

5)修改[NSClient]选项

启用port=12489的配置,系统通过端口12489侦听,系统中取消对该端口的限制后再执行nsclient命令。

6)配置nagios服务器

root@sz-yunfan:~# cat /usr/local/nagios/etc/objects/windows.cfg |grep -v '^#'|sed /^$/d

定义主机信息

define host{

use Windows-server

host_name Winserver

alias My Windows Server

address 172.18.158.78 //服务器IP地址

}

定义主机属组信息

define hostgroup{

hostgroup_name Windows-servers

alias Windows Servers

}

定义监控的服务――客户端信息

define service{

use generic-service

host_name winserver

service_description NSClient++ Version

check_command check_nt!CLIENTVERSION

}

定义监控的服务――在线时长

define service{

use generic-service

host_name winserver

service_description Uptime

check_command check_nt!UPTIME

}

定义监控的服务――CPU负载

define service{

use generic-service

host_name winserver

service_description CPU Load

check_command check_nt!CPULOAD!-l 5,80,90

}

定义监控的服务――内存利用率

define service{

use generic-service

host_name winserver

service_description Memory Usage

check_command check_nt!MEMUSE!-w 80 -c 90

}

定义监控的服务――磁盘空间利用率

define service{

use generic-service

host_name winserver

service_description C:\ Drive Space

check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90

}

定义监控的服务――服务状态

define service{

use generic-service

host_name winserver

service_description W3SVC

check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC

}

定义监控的服务――进程状态

define service{

use generic-service

host_name winserver

service_description Explorer

check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe

}

然后重新启动nagios

3.3 监控Windows集群服务器配置

校宿舍网络计费系统采用的是锐捷SAM系统,采用802.1x认证方式进行身份认证,SAM服务器采用2台服务器,通过Windows集群服务实现主从式架构,认证服务器在校宿舍网络中的重要程度毋庸置疑,因此,确保此服务器能正常运行是确保宿舍网络的良好运营的基础。

Nagios的集群监控,是使用check_cluster这个脚本来实现的,它通过读取status.dat文件,检查集群中各主机和服务的状态来得出集群状态。

在commond.cfg里加集群检查的命令

define command{

command_name check_service_cluster

command_line $USER1$/check_cluster -s -l $ARG1$ -w $ARG2$ -c $ARG3$ -d $ARG4$

}

define command{

command_name check_host_cluster

command_line $USER1$/check_cluster -h -l $ARG1$ -w $ARG2$ -c $ARG3$ -d $ARG4$

}

集群在Nagios系统中可以理解为service,需要挂在一个host的下面,以load为例。

以宿舍网SAM服务器集群为例,一个集群有2台机子,为cluster1-2,每台机器都加了load的监控,service_description是LOAD,集群检查挂名在cluster1这个主机下,集群的的定义如下:

define host{

use Windows-server

host_name cluster1

alias SAM1

address 172.17.11.2

}

define host{

use Windows-server

host_name cluster2

alias SAM2

address 172.17.11.3

}

define service{

use passive-service

host_name cluster1

service_description CLUSTER

is_volatile 0

check_period 24x7

max_check_attempts 3

normal_check_interval 5

retry_check_interval 2

contact_groups cluster_admin

notification_period 24x7

notification_options w,c

notification_interval 30

check_command check_service_cluster!"cluster_load"!1!2!$SERVICESTATEID:cluster1:LOAD$,$SERVICESTATEID:cluster2:LOAD$,

}

check_command中,$SERVICESTATEID是服务检查中产生的宏,存放了service检测的返回值。cluster11就是host的名字,LOAD就是service_description。

当2台机器中有一台以上机器的load检查不正常的时候,那它的返回就是warning,有两台机器检查结果不正常的时候,返回就是critical了。1和2就是warning和critical的分界。

主机集群监控command配置文件中配置如下:

check_host_cluster!"cluster_hosts"!1!2!$HOSTSTATEID:cluster1$,$HOSTSTATEID:cluster2$

在单台机器或者服务的contacts可以采取级别较低的报警类型,如email报警;而同样在集群服务的contacts配置文件中配置响应比较快的报警类型,如手机短信。这样非工作时间,集群内一台两台机器出了问题,在不影响集群应用的时候,就不会去发那么多短信来打扰网络管理员,而当集群真的出现问题的时候,才会发短信告知网络管理员紧急处理,通过查收Email邮件分析具体报警的是集群里的哪台机器。减少报警次数,提高报警的有效度,这就是我们智能网络监测系统所要达到目的。

3.4 监控网络核心交换机配置

由于校园宿舍网络设备已经采用Cacti进行监测,每一个监控信息都需要占用监控设备的开销,这样重复监控对设备产生负担,因此在这个部分我们只对核心设备进行监控,以最经济的开销达到最理想的效果。

root@sz-yunfan:~# vi /usr/local/nagios/etc/nagios.cfg

启用下面这行配置

cfg_file=/usr/local/nagios/etc/objects/switch.cfg

2)配置Nagios

需要做些对象定义用于监控新的交换机与路由器等网络设备。

打开switch.cfg配置文件进行配置

root@sz-yunfan:~# vi /usr/local/nagios/etc/objects/switch.cfg

对被监控的交换机加一个新的主机对象定义。编辑主机对象中的host_name、alias和address值。

define host{

use generic-switch

host_name RG6806E

alias RG6806E Switch

address 192.168.254.98

hostgroups allhosts,switches

}

3)监控丢包率和RTA

增加服务定义配置,用于监控被Nagios监控主机到交换机的丢包率和平均回包周期RTA,检测周期一般是每5分钟。

define service{

use generic-service

host_name RG6806E

service_description PING

check_command check_ping!200.0,20%!600.0,60%

normal_check_interval 5

retry_check_interval 1

}

4 总结

Nagios监控系统实现了网络服务系统重要信息的监控,提供了可靠的、稳定的应用服务,保证了网络服务的正常运行。解决了日常网络服务器管理的繁杂工作,释放了大量的人工管理工作时间。Nagios监控系统能准确记录、定位并及时报警,为解决网络操作系统故障提供了宝贵的时间,同时也将故障导致服务中断的时间降低至最低。有效、可靠的报警为网络服务的正常运行提供了良好的保障。

参考文献:

[1] Dietmar Ruzicka."Network Management with Nagios,Netsaint's Successor,What's Going On?"[J].Linux-magazine,Apr 2003:62-67.

[2] 吕伟春,胡洪新.构建安全稳定的高校宿舍网络[J].苏州市职业大学学报,2009,20(3):50-53.

[3] 宋磊,王静文.OpenBSD下基于Nagios的网络服务监控报警系统的研究[J].电脑编程技巧与维护,2009(14):112-113.

[4] 李晨光.Linux系统网络管理模块的实现[J].铁路计算机应用,2008,17(6):35-37.

[5] Nagios项目组.Nagios-3 应用指南[S].,2008.