一步步构建Nagios监控报警系统 

    Nagios是一款功能强大,性能稳定的开源的状态变化监控软件,其优良的特性征服了几乎所有的运维工程师,下面我们就具体了解一下nagios

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

Nagios的功能及特性

1)监控网络服务(HTTPPOP3SMTPPINGMySQL)

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

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

4)并行服务模式

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

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

7)自动日志滚动

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

9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选

 Nagios的工作原理:

      Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPENSCANSClient++NDOUtils)组成

Nagios的监控工作都是通过插件实现的,因此,NagiosNagios-plugins是服务器端工作所必须的组件。而四个ADDON

1NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控
2NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务(这在冗余监控模式中特别要用到)

3NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
4NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理

这四个ADDON(附件)中,NRPENSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端

Nagios各组件之间的调用关系:

      一步步构建Nagios监控报警系统_nagios

 

Nagios的安装:

 安装前的准备工作

 (1)解决安装Nagios的依赖关系:

Nagios基本组件的运行依赖于httpdgccgd。可以通过以下命令来检查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”即可。

当然,我们可以通过以下方式将nagiosCGI程序运行于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)中创建NagiosWeb程序配置文件,能够让我们使用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的警告语句,具体显示内容如下: 

一步步构建Nagios监控报警系统_休闲_02

 如果有,应首先确定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

如果显示如下,则表示语法正确    

一步步构建Nagios监控报警系统_职场_03

(3)如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:

service nagios start

  (4)通过web界面查看nagios

http://192.168.0.82/nagios   这是主机的IP,根据自己主机的IP进行相应的修改

如果成功的话将出现如下内容,进行身份认证,输入我们之前设定的web认证帐号和密码:

     一步步构建Nagios监控报警系统_职场_04

如果一切顺利,成功登录后将显示如下部分画面

一步步构建Nagios监控报警系统_nagios_05

到此为止,nagios的监控端已经配置完成,现在我们只能进行当前主机的状态监控,如图一步步构建Nagios监控报警系统_休闲_06

 

对被监控端的配置: 

    被监控端的操作系统类型是很重要的,在开始的时候我们介绍了不同操作系统的被监控端应进行相应不同的的配置:    

如果被监控端是windows操作系统,我们采取如下配置:

首先关闭windows上的防火墙

1.  被监控端安装NSClient++-0.3.8-Win32.msi

在安装过程中只需要填写nagios服务的主机地址,并查看任务管理器中的进行是否已经开启:如图

一步步构建Nagios监控报警系统_休闲_07

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监控报警系统_nagios_08

 

   到此,nagioswindows监控已经成功,关于对linux的监控以及被监控的主机状态发生改变nagios为我们进行报警的配置将在下篇文章中进行详细的介绍。