杨昌武 曹龙汉
1重庆邮电大学通信与信息工程学院 重庆 400065 2重庆通信学院控制工程重点实验室 重庆 400035
随着互联网的快速发展以及信息化的推广,计算机机房作为信息化的重要标志,大量的人力财力投入到机房的建设上,机房的规模日益壮大,而机房里面的服务器设备也更先进数量更庞大。怎样有效合理的去管理这么多的服务器让其正常运行成了众多IT运营部门的一道难题,为了保证公司的系统与业务能正常运行,很多企业都需要运维工程师能够适应 7*24小时故障响应处理,这无疑给运维工作人员增加了许多负担,因此一个能够实时监控服务器状态并通过飞信将故障信息发到系统运维人员的手机就显得极为重要。Nagios就是一个优秀的网络监控软件,它是Linux环境下使用率最高的监控软件,它可以监控网络服务、主机资源等。
Nagios自身并没有网络监控这部分功能,它所有的监控功能都是借助于各种插件来实现的。Nagios提供了许多插件,这些插件放在 nagios主目录下的/libexec里,在被监控的Windows主机里需要安装NSClient++插件。Nagios可以识别四种状态返回信息:OK表示状态正常;WARNING表示出现了一定的异常;CRITICAL表示出现了严重错误;DOWN表示被监控主机已经宕机了。Nagios通过插件返回来的值,来确定主机所处的状态,从而达到监控的效果。Nagaios调用各插件原理图如图1所示。
图1 Nagios调用各插件的原理图
Fetion Robot(飞信机器人)是一款基于中国移动飞信系统开发的一种IM通讯机器人工具,通过与nagios的结合可以免费发送报警短信,Windows/Linux双平台支持。文中给出了详细的配置步骤。
本文选择在Centos6.0上来部署nagios。
#groupadd nagios
#useradd -g nagios nagios
#passwd nagios
#mkdir /usr/local/nagios
#chown -R nagios:nagios /usr/local/nagios
#chmod 755 /usr/local/nagios
#usermod -G nagios apache
#usermod -G nagios nagios
在安装之前确认要对该机器拥有root权限,并且确认你安装好的Linux系统上已经安装好了Apache、Gcc编译器、GD库与开发库。可以用yum命令来安装这些软件包。
#yum -y install httpd* gcc* glibc* glibc-common gd gd-devel
wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
编译与安装nagios
#tar -xzvf nagios-3.2.3.tar.gz
#cd nagios-3.2.3
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/lib--with-gd-inc=/usr/include --enable-event-broker
#make all
#make all install
#make install-init
#make install-commandmode
#make install-config
安装nagios-plugins
#tar -zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins-1.4.15
#./configure --prefix=/usr/local/nagios-plugins
#make
#make install
安装完成后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移到到/usr/local/nagios目录下即可。
#mv /usr/local/nagios-plugins/libexec /usr/local/nagios/
#vi /etc/httpd/conf/httpd.conf
加入如下内容
####nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios "/usr/local/nagios/share"
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
然后重启apache
#/etc/rc.d/init.d/httpd restart
设置登录密码
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
在被监控的Windows主机上安装NSClient++插件,安装好后,修改配置文件 NSC.ini,将[modules]部分去掉除CheckWMI.dll和RemoteConfiguration.dll这两个外的其余模块前面的注释,在[settings]部分将allowed_hosts前面的注释去掉,并加上运行nagios的监控主机的Ip,另外将[NSClient]的port选项前面的注释去掉,这是NSClient的默认监听端口,设置好后,保存,重新启动服务,这样Windows端的插件就安装好了。
把nagios加入到服务列表中以使在系统启动时自动启动
#chkconfig --add nagios
#chkconfig --level 235 nagios on
验证nagios的样例配置文件是否正确
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有报错,可以启动nagios服务,注意要关闭防火墙,将/etc/selinux/config里面selinux设为disabled,然后重启系统。
#service nagios start
登录 http://ip/nagios/ 输入用户名和密码就可以正常访问nagios监控服务器了,然后就可以在/usr/local/nagios/etc/objects/目录下面的localhost.cfg中添加需要被监控的Linux主机,在 windows.cfg里面添加需要被监控的 Windows主机,在contacts.cfg里添加联系人,在switch.cfg里添加交换机等等。当公司所有被监控的主机添加完后,验证nagios的配置文件是否正确,并重启nagios服务,就可看到主机状态如图2所示。
图2 主机状态
#mkdir -p /usr/local/fetion/lib
#cd /opt
#wget http://www.it-adv.net/fetion/downng/library_linux.tar.gz
#tar -zxvf library_linux.tar.gz
#cp lib*so* /usr/local/fetion/lib/
#ln -s /usr/local/fetion/lib/libcrypto.so.0.9.8 /usr/local/fetion/lib/libcrypto.so.4
#ln -s /usr/local/fetion/lib/libssl.so.0.9.8/usr/local/fetion/lib/libssl.so.4
#cp /usr/local/fetion/lib/lib* /lib/
#vi /etc/ld.so.conf 加入如下内容
/usr/local/fetion/lib
#ldconfig
#wget http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
#cp http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz/usr/local/fetion/
#tar -zxvf fetion20091117-linux.tar.gz
#chown -R nagios:nagios /usr/local/fetion/fx/fetion
#chown -R +x /usr/local/fetion/fx/fetion
#./fetion
第一次执行时可能会提示有些东西没有安装,按照提示安装好即可。如果出现下面画面,就证明安装好了。
************************ IMPORTANT
STATEMENT ************************
** **
** PLEASE DON'T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES. **
** OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES. **
** **
** Version:[20100721003-linux] **
*********************************************************************
可以测试给自己发短信
#./fetion --mobile=********** --pwd=****** --to=*********** --msg-utf8="just a test"
第一次需要输入验证码,在/usr/local/fetion/fx下面有一个 158********.jpg的图片,输入验证码即可。注意,由于版本或协议问题,如果发不出去飞信,到飞信论坛下载执行程序 fetion,然后复制到原来安装地方,覆盖掉原来安装的fetion执行程序就可,出现如下画面表示飞信发送成功。
SIP-C/4.0 280 Send SMS OK
T: sip:416681618@fetion.com.cn;p=7712
#vi /usr/local/nagios/etc/objects/commands.cfg
在文件的最后面添加如下内容:
#'notify-host-by-fetion' command definition
define command{
command_name notify-host-by-fetion
command_line /usr/local/fetion/fx/fetion
--mobile=158******** --pwd=******* --to=158******** --msgtype=1 --msg-utf8="Host $HOSTSTATE$ alert for $HOSTNAME$!on '$LONGDATETIME$'" $CONTACTPAGER$
}
# 'notify-service-by-fetion' command definition
define command{
command_name notify-service-by-fetion
command_line /usr/local/fetion/fx/fetion
--mobile=158******** --pwd=****** --to=158******** --msgtype=1 --msg-utf8="$HOSTADDRESS$ $HOSTALIAS$/$SER VICEDESC$ is $SERVICESTATE$ on $LONGDATETIME"$CONTACTPAGER$
}
define contact{
contact_name yangchangwu
use generic-contact
alias Nagios Admin
service_notification_commands notify-service-by-fetion
host_notification_commands notify-host-by-fetion
pager 158********
}
修改好后,保存离开,检查有没有报错,然后重启nagios服务,这样手机就可以收到报警短信了。
本文详细的研究并实现了 Linux下 nagios与飞信的配置,并指出了其中容易出错的地方。在不超过 1000台服务器的情况下,利用飞信和nagios网络监控系统进行系统管理,可以大大减轻运维人员的工作量,提高工作效率,最重要的是能及时发现异常,快速处理,保证公司业务正常进行。
[1]晨曦无痕.Nagios的安装与配置并实现飞信报警[EB/OL].http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=9569.
[2]站长之家.Nagios网络监控工作原理[EB/OL].http://os.51cto.com/art/201103/251079.htm.
[3] wwwsky86.Nagios 3.2.0配置[EB/OL].http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=7519.
[4]傅宇旭.Apache服务器配置与管理[M].北京:清华大学出版社.2002.
[5] How To Monitor Remote Windows Machine Using Nagios on Linux. [EB/OL].http://www.thegeekstuff.com/2008/07/howto-monitor-remote-windows-machine-using-nagios-on-linux/.
[6]Nagios Is The Industry Standard In IT Infrastructure Monitoring.http://www.nagios.org/.