Friday, May 20, 2011

Nagios监控报警安装

一.Nagios简介



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

  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则需要同时安装在服务器端和客户端


[caption id="attachment_2122" align="aligncenter" width="499" caption="Nagios工作架构"][/caption]
三.Nagios的安装与配置

1.安装前的准备


  1. 解决安装Nagios的依赖关系:
    Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
    [cc lang='text' line_numbers='false']# yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server[/cc]

  2. 所需要安装组件:
    服务端所用的安装包为 nagios nagios-plugins ndoutils(非必须),linux客户端 nrpe,windows客户端 NSClient++

  3. 进行selinux设置,或者关闭 selinux




2.开始搭建:

  1. 添加nagios运行所需要的用户和组:
    [cc lang='text' line_numbers='false']# groupadd nagcmd
    # useradd -m nagios
    # usermod -a -G nagcmd nagios[/cc]
    把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
    [cc lang='text' line_numbers='false']# usermod -a -G nagcmd apache[/cc]

  2. 编译安装nagios:
    [cc lang='text' line_numbers='false']# tar zxf nagios-cn-3.2.3.tar.gz
    # cd nagios-cn-3.2.3
    # ./configure --with-command-group=nagcmd --enable-event-broker
    # make all
    # make install
    # make install-init
    # make install-config
    # make install-commandmode[/cc]
    为email指定您想用来接收nagios警告信息的邮件地址,默认是本机的nagios用户:
    [cc lang='text' line_numbers='false']# vi /usr/local/nagios/etc/objects/contacts.cfg
    email  nagios@localhost #这个是默认设置[/cc]
    在httpd的配置文件目录(conf.d)中创建Nagios的Web程序配置文件:
    [cc lang='text' line_numbers='false']# make install-webconf[/cc]
    创建一个登录nagios web程序的用户,这个用户帐号在以后通过web登录nagios认证时所用:
    [cc lang='text' line_numbers='false']# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin[/cc]
    以上过程配置结束以后需要重新启动httpd:
    [cc lang='text' line_numbers='false']# service httpd restart[/cc]

  3. 编译、安装 nagios-plugins
    nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。
    [cc lang='text' line_numbers='false']# tar zxf nagios-plugins-1.4.15.tar.gz
    # cd nagios-plugins-1.4.15
    # ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    # make
    # make install[/cc]

  4. 配置并启动Nagios
    把nagios添加为系统服务并将之加入到自动启动服务队列:
    [cc lang='text' line_numbers='false']# chkconfig --add nagios
    # chkconfig nagios on[/cc]

  5. 检查其主配置文件的语法是否正确:
    [cc lang='text' line_numbers='false']# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg[/cc]

  6. 如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
    [cc lang='text' line_numbers='false']# service nagios start[/cc]

  7. 配置selinux
    如果您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您可以通过下面的命令来检查您的系统是否开启了selinux:
    [cc lang='text' line_numbers='false']#getenforce[/cc]
    如果上面命令的结果显示开启了selinux服务,您可以通过下面的命令暂时性的将其关闭:
    [cc lang='text' line_numbers='false']#setenforce 0[/cc]
    如果您想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
    当然,您也可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
    [cc lang='text' line_numbers='false']# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
    # chcon -R -t httpd_sys_content_t /usr/local/nagios/share[/cc]

  8. 通过web界面查看nagios:
    http://your_nagios_IP/nagios
    登录时需要指定前面设定的web认证帐号和密码。登录界面如下:



 




[caption id="attachment_2124" align="aligncenter" width="638" caption="nagios3登录界面"][/caption]
四.客户端的配置:



对于windows客户端:

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

  2. 安装完成后修改配置文件NSC.ini把需要的库都打开

  3. 在监控服务器上修改nagios配置文件nagios.cfg
    去掉注释cfg_file=/usr/local/nagios/etc/objects/windows.cfg
    定义windows.cfg
    [cc lang='text' line_numbers='false']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.10  ; 你主机的IP
    }[/cc]

  4. 保存退出,查看windows状态:




[caption id="attachment_2125" align="aligncenter" width="300" caption="添加Windows主机监控"][/caption]
对于Linux客户端:



被监控端

  1. 先添加nagios用户
    [cc lang='text' line_numbers='false']useradd nagios[/cc]
    为了安装nrpe,先安装nagios-plugins-1.4.15.tar.gz 插件
    [cc lang='text' line_numbers='false']# tar zxf nagios-plugins-1.4.15.tar.gz
    # cd nagios-plugins-1.4.15
    # ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    # make
    # make install
    #yum install openssl-devel
    #tar -zxvf nrpe-2.12.tar.gz
    #cd nrpe-2.12.tar.gz
    #./configure --enable-ssl --with-ssl-lib=/usr/lib/
    #make all
    #make install-plugin
    #make install-daemon
    #make install-daemon-config[/cc]

  2. 配置nrpe信息
    [cc lang='text' line_numbers='false']vim /usr/local/nagios/etc/nrpe.cfg
    allowed_hosts=127.0.0.1  //允许监控的IP[/cc]
    修改后保存退出。
    检查:/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d


linux服务端




  1. 安装NRPE
    [cc lang='text' line_numbers='false']cd nagios-nrpe_2.8.1
    yum -y install openssl-devel
    ./configure --enable-ssl --with-ssl-lib=/lib/
    make all
    make install-plugin[/cc]

  2. 4.commands.cfg定义外部构件nrpe
    [cc lang='text' line_numbers='false']
    vim  /usr/local/nagios/etc/objects/commands.cfg
    #添加
    #check nrpe
    define command{
    command_name check_nrpe
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    }
    定义 mylinux.cfg
    define host{
    use             linux-server
    host_name     mylinux
    alias            mylinux
    address        192.168.0.20(客户端IP既被监控的IP)
    }
    define service{
    use                      generic-service
    host_name             mylinux
    service_description     check-swap
    check_command        check_nrpe!check_swap
    }
    define service{
    use                      generic-service
    host_name             mylinux
    service_description     check-load
    check_command         check_nrpe!check_load
    }
    define service{
    use                      generic-service
    host_name             mylinux
    service_description     check-disk
    check_command        check_nrpe!check_had1
    }
    define service{
    use                      generic-service
    host_name             mylinux
    service_description     check-users
    check_command        check_nrpe!check_users
    }
    define service{
    use                    generic-service
    host_name           mylinux
    service_description  otal_procs
    check_command     check_nrpe!check_total_procs
    }[/cc]
    保存退出,重启服务,实验效果: 

    [caption id="attachment_2126" align="aligncenter" width="300" caption="添加Linux主机监控"]

[/caption]

五.飞信报警



  1. 下载fention包,解压出来后,包括主程序 fetion,库文件 libACE_SSL-5.7.2.so   libACE-5.7.2.so  libcrypto.so.4  libssl.so.4

  2. [cci lang='text' line_numbers='false']mv  libACE_SSL-5.7.2.so   libACE-5.7.2.so  libcrypto.so.4  libssl.so.4  /usr/lib[/cci]

  3. chmod a+x fetion
    [cci lang='text' line_numbers='false']./fetion --mobile 150xxxxxxxx  --pwd 123456  --to 150xxxxxxxx --msg-tpye=0  --msg-utf8 $HOSTNAME[/cci]
    第一次发送会在当前目录下会生成一个150xxxxxxxx.jpg的图形验证码,将验证码输入,回车即可成功发送飞信。
    发送成功界面如下: 

    [caption id="attachment_2128" align="aligncenter" width="350" caption="飞信发送成功"][/caption]




No comments:

Post a Comment