8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

基于Linux系统的Nagios网络管理模块的实现

IT171中文网 管理员组 2013-7-2 1150

1.引言
随着计算机网络的普及,网络管理已成为信息时代中最重要的问题之一。在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境。计算机网络管理系统就是应这样的需求而产生的。它对网络上的各种设备进行管理,通过监视和控制这些设备,及时地向管理人员报告网络状态,并且简化网络故障的处理,减少故障造成的损失,提高网络的服务质量和效率。面对企业大大小小的服务器,单凭某个网管工具或某个人,已经不能胜任如此大的工作量同时也无法满足业务紧迫性的要求。各类企业之间以及企业内部的服务也越来越普遍,对于企业管理员的任务也是随之更加繁重。即使是一个小公司,在他们所使用的计算机系统中,也应该包含有不少数量的,运行着许多服务和软件包的硬件。大公司则更有成百上千的同类设施需要管理和运行。在管理员不可能及时去注意每一个服务和软件的情况下,为了对这些众多的服务和软件进行有效的管理。
一般来说,是采取发生问题后进行解决的方法,即基于反应的解决方案。但是这种解决方案通常的效率都是非常低的,如果反应及时,只需少数的几分钟就可以解决问题,但如果发现问题晚了,就会浪费时间带来更多损失。比如,察看及时地话,通过日志就可以发现某个服务是否运行异常,然后解决掉,但如果是在此服务异常运行已经很严重时,要恢复它,不仅困难还会带来不小的损失。因此,一个完成此类检测功能的自动化工具对于网络管理员就显得非常重要。Nagios是一个运行于Linux系统上的开源网络管理监测系统。它强大的功能可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和http等等)的状态,服务器的状态。
2.Nagios系统
2.1 Nagios系统介绍
Nagios是一个用来监视系统和网络的开源应用软件,它通常运行于一个主服务器上,
这个服务器运行Liunx或Unix操作系统。Nagios利用其众多的插件实现对本机和远端服务的监控,当被监控对象出现异常,Nagios就会及时给管理人员告警。它是一个基于TCP/IP
协议的软件包,包含有nagios主程序和它的各个插件,配置非常灵活,可以监视的项目很
多,也可以通过自定义shell脚本进行监控服务,非常适合各类企业的网络应用。
2.2 Nagios系统的主要特点
Nagios系统的特点主要有下面几点:
1.监控主机资源和网络服务
2.允许用户通过设计实现简单的插件来监控自己特定的服务
3.当被监控对象出现问题时,会及时通知管理人员
4.事先定义事件处理程序,当对象出现问题时自动调用对应的处理程序
5.通过web页面来监视对象状态,警告提示和日志文件
如下图1为Nagios的结构图:
&z[!k32Ke MO)zm0中国Linux联盟 - www.lisdn.com - 中国Linux软件开发基地,中国Linux爱好者的精神家园!oW!x ^ h.{w

1Nagios系统的结构图

可见,Nagios采用分布--集中的管理模式。在Nagios服务器上安装Nagios主程序,
在被监控主机上安装Nagios代理程序。通过Nagios主程序和Nagios代理程序之间的通讯,监视对象的状态。
2.3在Linux上运行Nagios系统
Nagios系统是运行在Linux或者Unix操作系统之上的,安装前确认操作系统支持TCP/IP协议并且有C语言编译器(如,gcc等)。如果没有web服务器,例如apache,预先安装之。在Nagois官方网站http://www.nagios.org下载Nagios主程序、插件和安装文档,最新版本是Nagios 3.2.3。Nagios是开源项目,它的安装也比较简单,按照文档一步步执行就可以顺利完成。
如果Nagios安装在/usr/local目录下,完成后执行如下命令
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
这个操作用来预先检查nagios配置的是否正确。如果没有错误,开始运行Nagios。
service nagios start (后面也可跟这些:restart, stop, reload.),也可以这样启动:
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
Nagios启动正常后,登录到nagios CGIs
打开浏览器,输入http://主机IP/nagios/如果配置正确将会进入到nagios的监视界面,然后可以查看没人情况下主机被监视的细节数据。如果出现提示“Internal Server Error”,这可能是本机上安装并正在运行Redhat Linux.首先查看Linux是否处于Enforcing模式getenforce然后把Linux置为permissive模式setenforce 0重新打开浏览器就可以看到被Nagios监控的服务了。
现在访问nagios的服务器web界面,界面如下图2。

访问界面图2

3.运用Nagios实现对网络上服务器的监控
3.1实现原理
处于网络中的各种服务器需要管理和维护,管理员不可能及时对每一台的状态都进行监
控,这时候当然需要借助软件的功能来实现了。Nagios的功能是监控服务和主机,但是他
自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx–h来查看其使用方法和功能。Nagios可以识别4种状态返回信息,即0(OK)表示状态正常、1(WARNING)表示出现一定的异常、2(CRITICAL)表示出现非常眼中的错误、3(UNKNOWN)表示被监控的对象已经停止了。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
3.2利用Nagios的NRPE插件实现网络上服务器的监控
知道Nagios是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服
务器对象的。Nagios系统提供了一个插件NRPE。Nagios通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图3所示:
">

图3 Nagios通过NRPE来远端管理服务[

1.Nagios执行安装在它里面的check_nrpe插件,并告诉check_nrpe去检测哪些服务。
2.通过SSL,check_nrpe连接远端机子上的NRPE daemon
3.NRPE运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4.最后,NRPE把检测的结果传给主机端的check_nrpe,check_nrpe再把结果送到Nagios状态队列中。
5.Nagios依次读取队列中的信息,再把结果显示出来。
下面通过一个监控远端服务器CPU负载情况的实例,研究如何实现通过NRPE来管理远端服务器。假设有一台远端服务器的IP是10.20.0.110,Nagios服务主机IP是:10.20.10.1。它们都已经安装上了nagios系统,主机通过NRPE检查运行中的服务器CPU的负载量,当负载量超过80%是发出警告(WARNING)报告,超过95%时发出紧急(CRITICAL)报告。在Nagios的插件中存在check_load -w $ARG1$ -c $ARG2$插件,通过查看其帮助,当Nagios调用它时,就会去检查对象主机的CPU负载,达到$ARG1$指定的数值时就会发出警告(WARNING),达到$ARG2$时发出紧急报告(CRITICAL)。

首先是在远端服务器上的修改:
1.让Nagios用户拥有对如下文件的所用权:
chown nagios.nagios /usr/local/nagios
chown –R nagios.nagios /usr/local/nagios/libexec
然后如果没有安装xinetd,则先安装xinetd。
2.按照Nagios文档安装好nrpe插件。
3.修改文件/etc/xinetd.d/nrpe:
only_from= 127.0.0.1 10.20.10.1(这个是Nagios主机的IP)
nrpe允许以上IP的机器通过nrpe查询服务
4.在/etc/service文件里添加:
nrpe5666/tcp#nrpe
然后service xinetd restart
5.执行:netstat–at | grep nrpe
如果出现:tcp00 *:nrpe*:*LISTEN说明NRPE监听已经成功启动了
6.执行/usr/local/nagios/libexec/check_nrpe–H localhost
出现NRPEv 2.8.1则安装成功。
7.确认本地防火墙允许远端服务器访问NRPE daemon:
iptables -IRH-Firewall-1-INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
service iptables save
8.打开/usr/local/nagios/etc/commands.cfg,找到check_load服务,修改如下:
define command{
command_namecheck_server_load
command_line$USER1$/check_load -w 80% -c 95%
}
9.打开/usr/local/nagios/etc/nrpe.cfg可以看到里面已经默认定义了一些检测服务,如:
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1
注释掉除check_load外的其它服务定义。
最后是Nagios主机上的修改:
1在Nagios主机上安装nrpe插件。
2打开/usr/local/nagios/etc/command.cfg添加如下行:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe –H 10.20.0.110 -c $ARG1$
}
3再在对象定义的配置文件里(host.cfg文件),修改host为要检测的主机的IP地址,然后
在服务中添加要检测的命令:
define service{
use linux-service
service_description remote_CPU_Load
check_command check_nrpe!check_load
}
4在nagios.cfg主配置文件中,cfg_file值为host.cfg,运行
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
如果没有错就启动nagios:
service nagios start(restart,stop)
5打开浏览器:http://主机IP/nagios
可以看到所监控的远端机器的这个信息了(check_server_load的返回结果),参看图2.正常状态用绿色表示,一旦远端服务器负载超过80%,状态信息就会变成红色警告管理员。
4.Nagios系统的评价和建议
本文是对Nagios的远端监控功能的应用和研究,要想得到更加复杂的服务,还需要进
一步的研究它的文档,并且不断的去尝试。和所有的网络管理工具一样,要想进行充分利用
Nagios进行全面的监控服务,需要进行相当复杂的设置,并且需要在运行时进行调整,以
确保所提供的信息是正确的,这些都会随着对Nagios的进一步了解而慢慢容易起来。虽然
Nagios配置复杂,但是一旦配置成功后它的操作很简单,大部分是基于web的操作,而且
易于扩展,这是它的两大特点。它还可以很轻松的与其他的工具进行整合和扩展,可以从其他的应用软件中接收数据,或者向一些报告引擎或者工具中发送数据等,例如,它可以借助mrtg软件来义图表的形式显示监控的服务状态,限于篇幅在此就不细说了。Nagios是一个非常强大的工具,在它运行后,它能够让你的IT工作变得更加容易。而相比商业版的类似软件,它也具有低成本的优势。自然,最好的特点是由于它是开放源代码的软件,因此我们随时可以从整个Nagios社区中获得帮助,能够共享社区中的各种插件和经验。最后对使用Nagios系统提出一点建议。在使用Nagios之前,开始考虑需要监控哪些服务和主机,对它们进行统一的规划,首先对重要资源服务进行管理,接着再去实现对其它服务进行管理;在配置完Nagios后,保存其配置文档,做好必要的注释,这将会使所监控管理的资源和所运行的插件更加清晰,也方便其他人以后能够在已有Nagios上继续工作。

来源:网络转载 [hr]
最新回复 (18)
全部楼主
返回
发新帖
我也是有底线哒~