主要参考 Linux系统监控之 Nagios配置教程详解(赵舜东)
1:Nagios监控的方式: 可以把Nagios的服务器监控分为两个部分: 第一部分是主机外监控,比如:主机是否存活,WEB服务是否正常,
MySQL服务是否正常等内容,再主机外通过访问其端口即可得知。这些监控命令再安装 nagios-plugins-1.4.13.tar.gz时已经生成了,再/usr/local/nagios/libexec 目录下。 第二部分是主机内监控,比如:要监控服务器的进程、磁盘使用等功能。这些功能的实现要依靠nrpe了,
nrpe的工作模式是C/S模式,在被监控主机中,开启nrpe监听,当听到监控服务器上所发出的命令,让它检查该服务器上的硬盘使用信息时,
它就会执行,并把信息传回,监控服务器,用一个不太恰当的比喻,就是***的工作模式。
2:监控机(linux系统)安装:nagios主程序,nagios-plugins插件,nrpe插件
      被监控机:linux版:安装nagios-plugins插件,nrpe插件
                     windows版:安装nsclient++插件
3:nagios 安装
   1.安装前的依赖检查 yum install glibc glibc-common gd gd-devel
    2.创建Nagios账户和组
       useradd -m nagios
       groupadd nagcmd 
       usermod -a -G nagcmd nagios 
       usermod -a -G nagcmd apache
       如果没有nagios用户组,则要创建nagios用户组,并且把nagios用户加入到nagios用户组中。用户组nagios对以后的一个插件ndoutils好像有关系
       创建一个用户组名为nagcmd用于从Web接口执行外部命令。将nagios用户和apache用户都加到这个组中。(这一个没弄懂)
       补充知识:查看用户组和用户
       groups 查看当前登录用户的组内成员
       groups gliethttp 查看gliethttp用户所在的组,以及组内成员
       whoami 查看当前登录用户名
       /etc/group文件包含所有组
       /etc/shadow和/etc/passwd系统存在的所有用户名
    3:安装nagios
      tar zxvf  nagios-3.3.1.tar.gz
      cd  nagios
      ./configure --with-command-group=nagcmd --with-nagios-user=nagios --with-nagios-group=nagios --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
      make all 
      make install 
      make install-init (生成init启动脚本) 
      make install-config (生成一些模板配置文件) 
      make install-commandmode (设置相应的权限) 
      make install-webconf (生成Apache配置文件nagios.conf)(这一步很重要,主要是为了以web方式登录nagios)
      最后一步出错
      显示
      [root@localhost nagios]# make install-webconf
      /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
      /usr/bin/install: cannot create regular file `/etc/httpd/conf.d/nagios.conf': No such file or directory
      make: *** [install-webconf] Error 1
      这一步的主要目的是把安装文件nagios下的sample-config下的httpd.conf文件变成apache/conf/nagios.conf文件所以
      解决方法
      /usr/bin/install -c -m 644 sample-config/httpd.conf /usr/local/apache/conf/nagios.conf
      (用cp sample-config/httpd.conf /usr/local/apache/conf/nagios.conf也可以)
      这样之后在/usr/local/apache/conf/httpd.conf 文件添加   Include conf/nagios.conf    注意include第一个字母大写
      意不能写include nagios.conf  会无法识别
     4:创建web界面登录nagios
      /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin
     5:设置Nagios的开机启动
     chkconfig --add nagios 
     chkconfig nagios on
     验证Nagios的样例配置文件
     /usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg
     如果没有报错,可以启动Nagios服务
     service nagios start
     重启apache服务器
     在浏览器中输入localhost/nagios
     显示以下页面

 

 因为没有安装nagios-plugins插件页面中的选项无法使用。

     至此成功  下一步安装插件nagios-plugins,nrpe

     但是我出下了一下问题如下图 
      

 原因:主要是缺少mod_cgi.so 文件无法执行cgi文件

    参考  http://lvzili.blog.51cto.com/1995527/820865
    发现我的httpd.conf 文件中把 mod_cgid.so 这一行注释掉了
    如下
    loadModule cgid_module modules/mod_cgid.so  注释去掉就行了

    如果没有mod_cgid.so  那就是mod_cgi.so  在目录下 /usr/local/apache/modules 

    如果目录下没有,就要自己安装了。
    6:更改SELinux设置
     Fedora与SELinux(安全增强型Linux)同步发行与安装后将默认使用强制模式。这会在你尝试联入Nagios的CGI时导致一个"内部服务错误"消息
      a: 如果是SELinux处于强制安全模式时需要做
     getenforce
     令SELinux处于容许模式
     setenforce 0
     b:永久性关闭SELinux,对于SELinux不是很熟悉的用户,请选择此。[root@UnixHot nagios-3.2.0]# cat /etc/sysconfig/selinux 
        SELINUX=disabled
     c:给打上正确的安全脉络。
       chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ 
       chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
      三种方法都行,建议使用第二种。
4:nagios-plugins插件安装
    1:安装
    tar zxvf nagios-plugins-1.4.15.tar.gz
    cd  cd nagios-plugins-1.4.15/
   ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
    make && make install
    2:nagios的监控结果如下

 

 这是监控本机的一些信息。在 /usr/local/nagios/etc/objects 目录下编写一些cfg文件实现对机器的监控。

        针对不同机器可以编写不同的cfg文件。cfg文件可以包括host 、hostgroups 、service等等。
        也可以把host 、service 、contact 、等分开写在不同的hosts.cfg  services.cfg ,hostgroups.cfg 文件中。
        两种形式nagios都支持。
5:安装nrpe
    ./configure
     make all
     make install-plugin
     make install-daemon
     make install-daemon-config
     make install-xinetd
     (有些没有xinetd服务,解决办法未知)
     此时在etc/xinetd 目录下有nrpe文件,在nagios/etc 目录下有nrpe.cfg 文件,在nagios/libexe 目录下有check_nrpe 文件等等.
     启动nrpe守护进程
     /usr/local/nagios/bin/nrpe ‐c /usr/local/nagios/etc/nrpe.cfg ‐d 
     此命令生成的日志会在/var/log/message  中,如果没有出错,就基本搞定了。
    验证一下
    [root@localhost nrpe-2.13]# /usr/local/nagios/libexec/check_nrpe -H localhost
    NRPE v2.13
    显示了nrpe的版本就说明nrpe安装成功了。
    查看nrpe 的端口5666 是否处于监听状态。
    [root@localhost nrpe-2.13]# netstat -ln | grep 5666
    tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      
    显示处在监听中。

    nrpe的一些配置文件。
   /etc/xinetd/nrpe  如下
   # default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1
}
only_from 一行的含义是  :在only_from 添加被监控的主机的IP地址,中间以空格隔开。(应该是主要针对linux主机)

    /usr/local/nagios/etc/nrpe.cfg 文件
  在该文件中,有一行:
  allowed_hosts=127.0.0.1    # 监控机的ip地址或者域名。
  
自我感觉应该是这样的:
  监控机:nagios + nagios-plugin ——nrpe
  被监控机: nagios-plugin+nrpe

在监控机中要配置:/etc/xinetd/nrpe    only_from =被监控机的ip地址

在被监控机中要配置:/usr/local/nagios/etc/nrpe.cfg   allowed_hosts=监控机的ip地址。

  然后编写一个cfg文件,在nagios.cfg 文件包含该文件的路径

在这之前一定要确定commands.cfg  文件中要有check_nrpe 命令的定义

如下#nrpe set
define command{
        command_name   check_nrpe
        command_line   /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

  
6:nsclient++安装
   参考网上的文件
   http://nsclient.org/nscp/downloads
    这两个一样的,安装方式不一样而以,msi包配置更直观些。
   注:在选择安装包之前,确认自己的系统是32位或64位,并下载相应的安装包。
   这里选择NSClinet++-0.3.9-Win32.zip
   解压然后
    打开cmd 切换到C:\NSClient++
   执行nsclient++ /install进行安装
   C:\NSClient++>NSClient++ /install
   在任务管理器中查看是否存在该进程,如果不存在则可以在服务中启动

    修改配置文件:
    编辑C:\NSClient++下的NSC.ini文件
    将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll and RemoteConfiguration.dll这两个
    在[Settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的,我这里方便起见跳过它,不要密码.
    将[Settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的IP.改为如下这样allowed_hosts=127.0.0.1/32,          
    192.168.164.38/32,192.168.100.3/32,192.168.197.34/32,192.168.1.38/32,192.168.23.37/32
    注:其中三墩:192.168.164.38/32;滨江:192.168.100.3/32上海:192.168.197.34/32;文三:192.168.1.38/32;仓前:       
   192.168.23.37/32  
    必须保证[NSClient]的'port'选项并没有被注释,并且它的值是'12489',这是NSClient的默认监听端口
    具体设置如下图

 然nsclient开机自动启动可以在服务中设置。
   开放12489端口
   需要注意的是,nagios要监控windows主机,windows主机的防火墙要开放12489端口(前面定义的)
   在cmd里面执行netstat –an可以看到已经开始监听tcp的12489端口了

    这样外部就可以访问了吗?错!防火墙也要打开tcp的12489端口,否则nagios检查此服务的时候会报socket 超时错误.是critical哦!后果很十分严重啊.我就犯   了这个错误,所以特别强调一下.
   这样被监控机的配置就搞定了,它就等待nagios发出某个监控请求,然后它执行请求将监控的结果发回到nagios监控主机上.

备注:也可以直接把防火墙关了。有时即便都正确,也可能出错时,即nagios 监测的还是critical 此时可以换个端口。
  在监控机中:commands.cfg 文件下要对check_nt 命令设置
  如下:
  # 'check_nt' command definition
define command{
        command_name    check_nt
        command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 11272 -v $ARG1$ $ARG2$
        }
    -p后面得是端口。
  注意,针对windows监控的windows.cfg文件,要注意修改ip地址。


    以下是我自己的配置:vbox虚拟机安装fedora 16
     使用nat连接方式时,虚拟机中自动上网

 此时ip地址为10.0.2.15   ,在windows中VirtualBox Host-Only Network 地址为192.168.56.1

  nsclient++配置为

   setting中 allowed_hosts=10.0.2.15/8,127.0.0.1/32 ,然后我把端口改为11272   其他没改。(windows主机是dhcp方式上网)