Nagios有个很搞笑中文翻译“难过死”,由此可以看出,他的配置不简单奥,呵呵<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。

v 1)监控网络服务(HTTPPOP3SMTPPINGMySQL)

v 2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)

v 3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本

v 4)并行服务模式

v 5)轻松描述网络结构,并且能够区辨宕机主机不可达

v 6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员6)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式)  可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。

v 7)自动日志滚动

v 8)支持以冗余方式进行主机监控

v 9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选
Nagios通常是有一个主程序nagios和一个插件程序nagiox-plugins和是个可选的addon(NSCANSClient++NRPENDOUtils)Nagios的监控工作都是通过插件实现的,因此,NagiosNagios-plugins是服务器端工作所必须的组件。而四个ADDON
1NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控
2NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
3NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
4NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理
这四个ADDON(附件)中,NRPENSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端

具体工作中,各个组件的调用如下图所示:
 
 
而接下来实现的过程就是基于这个图来实现的(该图来自马哥博客,详细可以见上面的网址)
首先介绍一下这个图片的整个工作流程,首先nagios是通过配置文件来驱动这个监控流程,因为所有的内容都是可以配置的,所以这也就非常灵活的,功能自然强大了,nagios主要通过各个配置文件之间的调度,以及插件的安装,来实现即使通信的,然后检测被检测机器的状态,主要是通过ping的机制来检测各个机器是否可达,然后按照一定的模块的驱动来实现指定的报警效果。
接下来就介绍整个安装及配置过程,并且实现飞信报警通知的功能:

 

一、安装一系列所依赖的软件包:
# yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server
添加nagios运行所需要的用户和组
# groupadd  nagcmd
# useradd  -m nagios
# usermod -a -G nagcmd nagios
# usermod -a -G nagcmd apache  //apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限

 

编译安装nagios
# tar zxf nagios-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3.1.2.tar.gz
# cd nagios-3.1.2
#./configure --with-command-group=nagcmd  -–enable-event-broker
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
# make install-webconf
说明:第一个执行make install安装主要的程序、CGIHTML文件,第二步执行make install-init的步骤,他的作用是把nagios变成一个脚本,是nagios随系统开机启动,第三步执行make install-config就是把配置文件复制到nagios的安装目录,第四步make install-commandmode为外部命令访问nagios配置文件的权限,第五步创建nagiosweb程序的配置文件。当一切都准备完成之后,就会在/uer/local/nagios下生成5个目录如下图所示:
其中这几个目录的主要作用如下表所示
 
bin

Nagios 执行程序所在目录,这个目录只有两个文件 nagios nagiostats

etc

Nagios 配置文件位置,初始安装完后,只有几个 *.cfg-sample 文件和一个 objects 的目录,该目录中放的是一些模版,在做监控的时候主要就在这些模版中进行修改

sbin

Nagios Cgi 文件所在目录,也就是执行外部命令所需文件所在的目录

Share

Nagios 网页文件所在的目录

Var

Nagios 日志文件、 spid 等文件所在的目录

 
编辑nagios报警信息的邮件地址
#vi /usr/local/nagios/etc/objects/contacts.cfg

email        nagios@localhost       #这个是默认设置修改为
email                           nagiosadmin@localhost (注:这里可以不做修改)
为登录到nagiosweb页面创建一个用户
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

以上过程配置结束以后需要重新启动httpd
# service httpd restart

 

编译、安装nagios-plugins
nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件
# tar xf nagios-plugins-1.4.15.tar.gz

# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql
# make
# make install
完成nagios-plugins的编译安装之后,就可以启动nagios
# chkconfig --add nagios
# chkconfig  nagios on
# export PATH=$PATH:/usr/local/nagios/bin/   修改一下环境变量,方便下面做nagios配置文件的检测
# ln -sv /usr/local/nagios/etc/nagios.cfg /etc/nagios.cfg

#nagios –v /etc/nagios.cfg  //检查配置文件无误后启动nagios
# service nagios start
Starting nagios: done.
OK,这个时候就可以在浏览器中输入对应的http://IP/nagios就可以登录到页面了,这里面使用的用户名和密码就是htpasswd 时候创建的用户和密码
进入界面之后,如下图所示:
 
上面显示的绿色的都是正常的,而红色的都是出现问题的主机

 

接下来我将做如何服务器如何使用飞信通知服务器出现了故障:
现在软件:
主程序:
首先安装fetion的客户端,我这里是从网上down的,还有一些飞信执行需要的库文件
注意这里面的fetion客户端需要有执行的权限
#cd /feixin
#mv fetion  /usr/bin/
#cp lib* /usr/lib/
#ldconfig
#chmod +x /usr/bin/fetion
这里就可以使用 fetion进行一下简单的测试了,如下
#fetion --mobile 15290415659 --pwd yourpassword --to 15290415659 --msg-tpye=0  --msg-utf8 "hello"   //输入你的手机号码和飞信的密码,密码我这里就不显示了,呵呵
如果是第一次的话,会出现如下的内容,其实这是一个图片,也就是对飞信登录的一个验证码:
这个时候你需要登录到服务器的图形化界面,找到这个图形化界面,一般在飞信运行的二进制文件所在的目录下,然后在最后一行输入这个验证码上的信息,这样就OK啦!!
上面反黑的是我第一次发飞信的时候产生的验证码,输入后,以后发飞信就不用验证了。
这个我发到我手机上后,上面显示的是“飞信名:主机名”如“ Ro: station78.example.com
如果我们上面的发飞信的命令最后面跟一个“ error 你就会收到 error ,呵呵,你可以试一下。
这里只是简单的测试,接下来就是导入到 nagios 中去,让他及时监视服务器,然后发飞信。

 

编辑一下 nagios 的主配置文件 nagios.cfg
#vim /usr/local/nagios/etc/nagios.cfg
注释掉 cfg_file=/usr/local/nagios/etc/localhost.cfg
然后把下面几行的注释去掉:
cfg_file=/usr/local/nagios/etc/hosts.cfg // 主机配置文件路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg // 联系人配置文件路径
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg // 监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
check_external_commands=0 check_external_commands=1 这行的作用是允许执行在 web 界面下重启 nagios 、停止主机 / 服务检查等操作。把 command_check_interval 的值从默认的 1 改成 command_check_interval=10s (根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。主配置文件要改的基本上就是这些,通过上面的修改,发现 /usr/local/nagios/etc 并没有文件 hosts.cfg 等一干文件,稍后就手动创建它们。
修改文件 cgi.cfg

#vim /usr/local/nagios/etc/cgi.cfg

use_authentication=1
default_user_name=guest
修改 commands.cfg 文件,添加发飞信的命令
# vim /usr/local/nagios/etc/objects/commands.cfg
define command{

        command_name notify-service-by-fetion

        command_line      /usr/bin/fetion --mobile 152xxxxxxxx --pwd xxxxx  --to 152xxxxxxxx --msg-tpye=0  --msg-utf8 $HOSTNAME

}

 

当然你还可以定义监控时间,在配置文件中 timeperiods.cfg 中,可以按照自己的需要进行修改;
#vim /usr/local/etc/objects/ templates.cfg   找到如下内容进行修改

define contact{

        name                            generic-contact         ; The name of this contact template

        service_notification_period     24x7                    ; service notifications can be sent anytime
        host_notification_period        24x7                    ; host notifications can be sent anytime
        service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events
        host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events
        service_notification_commands   notify-service-by-email ; send service notifications via email
        host_notification_commands      notify-host-by-email    ; send host notifications via email
        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
        }

把报警方式修改为我们上面定义的使用飞信的机制来实现,注意这个名字一定要与定义的飞行名字相同 notify-service-by-fetion

修改飞信可执行文件的属主和属组为 nagios

# chown -R nagios.nagios /usr/bin/fetion

OK