一步步构建Nagios监控报警系统
Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。
Nagios的功能及特性:
1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)
2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)
3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本
4)并行服务模式
5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”
6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员6)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式) 可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。
7)自动日志滚动
8)支持以冗余方式进行主机监控
9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选
Nagios的工作原理:
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、 NSClient++和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的安装:
安装前的准备工作
(1)解决安装Nagios的依赖关系:
Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server
(2)配置selinux
如果您的系统开启了selinux服务,则默认系统将拒绝nagios web cgi程序的运行,所以我们应检查系统是否开启了selinux
getenforce
如果上面命令的结果显示开启了selinux服务,通过下面的命令暂时性的将其关闭:
setenforce 0
如果想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
当然,我们可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
chcon -R -t httpd_sys_content_t /usr/local/nagios/share
但是为了实验能构成功我们还是关闭selinux
在当前主机上架设nagios的过程:
1、添加nagios运行所需要的用户和组:
groupadd nagcmd
useradd -m nagios
usermod -a -G nagcmd nagios
把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
usermod -a -G nagcmd apache
2、编译安装nagios:
tar zxf nagios-3.2.3tar.gz
cd nagios
./configure --with-command-group=nagcmd --enable-event-broker --prefix=/var/www/nagios
make all 将所有的编译环境都进行编译
make install
make install-init 编译安装开机启动程序
make install-config 编译安装配置文件
make install-commandmode 编译安装其命令
make install-webconf 编译安装web的配置文件,在httpd的配置文件目录(conf.d)中创建Nagios的Web程序配置文件,能够让我们使用web对其进行管理
由此我们可以看出nagios的安装非常灵活,当我们需要哪个程序的时候可以有针对性的安装。
创建一个登录nagios web程序的用户,这个用户帐号在以后通过web登录nagios认证时所用:
htpasswd -c /var/www/nagios/etc/htpasswd.users nagiosadmin
修改配置文件/etc/httpd/conf/httpd.conf,将httpd服务的默认网页路径改为:
/var/www
以上过程配置结束以后需要重新启动httpd:
service httpd restart
3、编译、安装nagios-plugins
nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。
tar zxf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql
在编译完成之后我们要仔细查看编译的过程,看是否有跳过mysql的警告语句,具体显示内容如下:
如果有,应首先确定mysql的库文件位置没有错,然后给编译的过程指定mysql库文件的位置,方法如下:
cp /usr/lib/mysql到/usr/lib/pkgconfig
指定之后重新执行 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql
编译完成之后我们还要查看编译过程,是否再次出现了跳过mysql的警告语句,如果还是有就拿出我们的杀手锏,方法如下
yum install mysql-devel -y mysql的这个组件就是解决在编译时无法找到mysql的一些组件或是其他在编译中产生的怪异问题
这步正确完成之后,就进行如下的步骤:
make
make install
4、配置并启动Nagios
(1)把nagios添加为系统服务并将之加入到自动启动服务队列:
chkconfig --add nagios
chkconfig nagios on
(2)检查其主配置文件的语法是否正确:
/var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg
如果显示如下,则表示语法正确
(3)如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
service nagios start
(4)通过web界面查看nagios:
http://192.168.0.82/nagios 这是主机的IP,根据自己主机的IP进行相应的修改
如果成功的话将出现如下内容,进行身份认证,输入我们之前设定的web认证帐号和密码:
如果一切顺利,成功登录后将显示如下部分画面
到此为止,nagios的监控端已经配置完成,现在我们只能进行当前主机的状态监控,如图
对被监控端的配置:
被监控端的操作系统类型是很重要的,在开始的时候我们介绍了不同操作系统的被监控端应进行相应不同的的配置:
如果被监控端是windows操作系统,我们采取如下配置:
首先关闭windows上的防火墙
1. 被监控端安装NSClient++-0.3.8-Win32.msi
在安装过程中只需要填写nagios服务的主机地址,并查看任务管理器中的进行是否已经开启:如图
2. 安装完成后修改配置文件NSC.ini把需要的库都打开,
找到配置文件的方法:
这个程序的配置文件默认为C:\Program Files\NSClient++下的NSC.ini文件
打开这个文件进行如下修改:
(1)、打开需要的库文件,将行的最前端带有“;”的,将这个符号删除即为打开。
具体修改结果如下:
[modules]
NRPEListener.dll
NSClientListener.dll
NSCAAgent.dll
CheckWMI.dll
FileLogger.dll
Checksystem.dll
CheckEventLog.dll
CheckHelpers.dll
;# NSCLIENT++ MODULES
;# A list with DLLs to load at startup.
; You will need to enable some of these for NSClient++ to work.
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; * *
; * N O T I C E ! ! ! - Y O U H A V E T O E D I T T H I S *
; * *
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
NRPEListener.dll
SysTray.dll
CheckEventLog.dll
CheckHelpers.dll
CheckWMI.dll
(2)、配置nagios服务器的IP地址:
修改结果如下:
;# ALLOWED HOST ADDRESSES
allowed_hosts=192.168.0.82
保存配置文件即可
3. 在监控服务器上修改nagios配置文件nagios.cfg
为了配置的方便进行我们对nagios的主配置文件做一个连接
ln -vs /var/www/nagios/etc/nagios.cfg /etc/nagios.cfg
对配置文件/etc/nagios.cfg进行如下修改
去掉cfg_file=/var/www/nagios/etc/objects/windows.cfg 的注释
定义windows.cfg
修改/var/www/nagios/etc/objects/windows.cfg文件,修改结果如下
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.0.254 ; windows主机的IP,我的为192.168.0.254
}
保存退出即可:
重新启动nagios服务
service nagios restart
查看我们的nagios是否监控到了windows主机:
如图显示则表示监控成功:
到此,nagios对windows监控已经成功,关于对linux的监控以及被监控的主机状态发生改变nagios为我们进行报警的配置将在下篇文章中进行详细的介绍。