nagios实现网络监控并实现飞信报警

Nagios 有个很搞笑中文翻译“难过死”,由此可以看出,他的配置不简单奥,呵呵
Nagios 是一款遵循 GPLv2 的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。
v 1) 监控网络服务 (HTTP POP3 SMTP PING MySQL )
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(NSCA NSClient++ NRPE NDOUtils)Nagios 的监控工作都是通过插件实现的,因此, Nagios Nagios-plugins 是服务器端工作所必须的组件。而四个 ADDON
1 NRPE :用来在监控的远程 Linux/Unix 主机上执行脚本插件以实现对这些主机资源的监控
2 NSCA :用来让 被监控的远程 Linux/Unix 主机主动将监控信息发送给 Nagios 服务器 ( 这在冗余监控模式中特别要用到 )
3 NSClient++ :用来监控 Windows 主机时安装在 Windows 主机上的组件
4 NDOUtils :则用来将 Nagios 的配置信息和各 event 产生的数据存入数据库,以实现 这些数据的快速检索和处理
这四个 ADDON( 附件 ) 中, NRPE NSClient++ 工作于客户端, 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- 3.1.2 .tar.gz
# cd nagios- 3.1.2
#./configure --with-command-group=nagcmd  -�Cenable-event-broker
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
# make install-webconf
说明:第一个执行 make install 安装主要的程序、 CGI HTML 文件,第二步执行 make install-init 的步骤,他的作用是把 nagios 变成一个脚本,是 nagios 随系统开机启动,第三步执行 make install-config 就是把配置文件复制到 nagios 的安装目录,第四步 make install-commandmode 为外部命令访问 nagios 配置文件的权限,第五步创建 nagios web 程序的配置文件。当一切都准备完成之后,就会在 /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 (注 : 这里可以不做修改)
为登录到 nagios web 页面创建一个用户
# 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 �Cv /etc/nagios.cfg  // 检查配置文件无误后启动 nagios
# service nagios start
Starting nagios: done.
OK ,这个时候就可以在浏览器中输入对应的 http://IP/nagios 就可以登录到页面了,这里面使用的用户名和密码就是 htpasswd 时候创建的用户和密码
进入界面之后,如下图所示:
 
上面显示的绿色的都是正常的,而红色的都是出现问题的主机
 
接下来我将做如何服务器如何使用飞信通知服务器出现了故障:
现在软件:
主软件: http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
主程序:
http://bbs.it-adv.net/attachment.php?aid=43&k=b1e8997336d66ec8610adc2b790376a2&t=1299230237
库文件:  http://www.it-adv.net/fetion/linuxso_20101113.rar
首先安装 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
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(职场,监控,nagios,休闲,飞信报警)