Chinaunix首页 | 论坛 | 博客
  • 博客访问: 885187
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: LINUX

2011-04-19 21:24:55

第一,   nagios 的插件介绍

1,nagios 是一款开源的网络监控软件,可以用来监控host ,service等对象,nagios能根据监控对像状态的变化的改变,而进行通知管理员,当然 您可以选择报警的方式(     E-mai,SMS(即短信服务))

2 nagios 通常有一个主程序,一个插件程序nagios-plugins和四个可选的ADDON 分别是NRPE,NSCA,NSClient++和Ndoutils 做成,当然nagios的监控工作都是通过插件来实现的,nagios和nagios-Plugins 是服务器端工作必须的组件,而其他四个ADDON的作用分别是



   NRPE是用来监控远程linux/unix 主机,用来执行远程主机上的插件或者脚本,来进行监控主机的资源及其服务,当然用该中方法监控远程linux/unix主机上的资源的话,必须nagios 服务端同时也要安装该NRPE
   NSCA是用来被监控的远程linux/unix 主机主动将监控信息发送给nagios 服务端(在冗余监控模式中用到,当在nagios的分布式监控中同样也要用到该插件) 如果用NSCA插件进行监控远程主机上的资源的话,同样nagios 服务器端同样要安装该插件

      NSClient++ 该插件是用来监控Window 主机上的资源的,    
             NDOUTILS ADDON主要用来将Nagios的配置信息和event产生的数据存入数据库(目前的beta版支持mysql和pgsql,稳定版只支持 mysql),以方便实现数据的快速检索和处理,并且为其它通过web接口程序来管理这些数据提供了保障。
在一个大型应用中,可能存在多个独立的或分布式布置的Nagios服务器,这种环境中的每个Nagios服务器通常被称为一个Nagios实例。在多Nagios实例的环境中,既可以把所有实例的数据存入到一个数据库,也可以将各实例的数据分别存储。
在只有一个Nagios实例环境中,其实例名称通常为“default”;而在多实例的环境中,则需要为此些Nagios实例各自命名。
 
NDO Utils主要由以下四个部分组成:
 
1)NDOMOD Event Broker Module(NDOMOD.O):用来输出Nagios进程产生的数据(data和logic),其前提是Nagios在编译时开启了Event broker的功能。同时,NDOMOD模块还可以导出Nagios配置有关的信息(包括Nagios监控进程运行时环境产生的动态数据)至文件、 Unix域套接字或者TCP套接字。NDO2DB将通过前面的这三种方式获得Nagios的有关数据。
2)NDO2DB:用来接收由NDOMOD和LOG2NDO组件输出的信息并将之存储在数据库中。启动时,NDO2DB进程将创建一个TCP套接字或Unix域套接字以监听客户端(输出端)的连接请求。目前仅支持MySQL数据库。
多个客户端可以同时向一个NDO2DB守护进程输出数据,此时的NDO2DB将为每一个连接进来的客户端(Nagios实例)建立一个连接进程,以实现每个客户端数据的独立存储、检索和处理。
3)LOG2NDO:用来将Nagios的历史日志通过NDO2DB进程输出至数据库。LOG2NDO与NDO2DB进程通信的方法依然是标准文件、Unix域套接字或者TCP套接字三种。
4)FILE2SOCK:从标准文件或标准输入读入数据,并将之输出至Unix域套接字或TCP套接字。当NDOMOD或LOG2NDO将数据输出至标准文件时,此工具则可用来将这些标准文件中数据读出并发送给NDO2DB进程监听的TCP套接字或Unix域套接字。

下面是nagios 的组件的架构图,如下:

 

第二 ,首先在nagios服务器上安装NRPE插件

 1解压并按装NRPE
 # tar xvf nrpe-2.12.tar.gz
 # cd   xvf nrpe-2.12

   #./configure --prefix=/usr/local/nrpe --with-nagios-user=nagios --with-nagios-group=nagios
   #make install
   #make install-plugin



   #make install-daemon
       #make install-daemon-config
       #make install-xinetd

#cp src/nrpe /usr/local/nagios/bin
#cp init-script /etc/init.d/nagios-nrpe
#chmod +x /etc/init.d/nagios-nrpe

安装nrpe后,在安装目录libexec中只有一个check_nrpe文件需要拷贝到Nagios插件目录中,同时nrpe需要用的插件在自己目录中也没有。最好全部複製。需要复制
cd /usr/local/nagios/libexec
[root@mail libexec]# cp check_disk /usr/local/nrpe/libexec/
[root@mail libexec]# cp check_load /usr/local/nrpe/libexec/
[root@mail libexec]# cp check_ping /usr/local/nrpe/libexec/
[root@mail libexec]# cp check_procs /usr/local/nrpe/libexec/
[root@mail libexec]# cp /usr/local/nrpe/libexec/check_nrpe ./

2 同样也要为nagios指定固定端口,只要该端口没被占用就可以,也没有必要指定的是5666

    为nrpe指定固定的端口
#vim /etc/service
nrpe   5666/tcp   #NRPE

 
3 配置超级守护进程中管理nrpe(不做启动服务的话可不做配置)
       #cd /etc/xinetd.d/nrpe
        only_from   = 127.0.0.1 注: 必须添加nagios的服务端的地址如果为配置允许nagios服务端的地址的话,nagios 服务器不能正常通过nrpe 进行监控该主机、
4启动NRPE的后台守护进程
      /usr/local/nagios/bin/nrpe   -c /usr/local/nagios/etc/nrpe.cfg –d 或直接运行

/usr/local/nrpe/bin/nrpe -c /usr/local/nrpe/etc/nrpe.cfg -d
而该命令生成的日志在系统日志中(即/var/log/message)中。如果没有错误,就基本上是完成了
5在nagios服务器上定义命令
   #cd /usr/local/nagios/etc/object
   #vim command.cfg
define command {
     command_name check_nrpe

     command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADRESS$ -c $ARG1$

6 在nagios服务器上验收一下
#/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
   返回的值为被监控服务器上安装的NRPE的版本信息
           NRPE v2.12
 
第三 在远程主机上安装nagios-plugins 和nrpe
1添加nagios用户,应为nagios默认情况下运行NRPE
 #useradd nagios
2安装nagios-plugin插件
   #tar xvf nagios-plugins-1.4.15.tar.gz
   # cd   nagios-plugins-1.4.15
   # ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
       # make instal
      #cd /usr/local/nagios/

        #chown -R nagios.nagios /usr/local/nagios
        
3安装并配置nrpe
    与上面相同
4配置nrpe的主配置文件
     #cd /usr/local/nagios/etc
     #vim nrpe.cfg
       allow_hosts=127.0.0.1 Nagios-IP-Address #注: 修改为nagios的服务器地址,如果是多个IP 中间用“,” 隔开

5 配置超级守护进程中管理nrpe
       #cd /etc/xinetd.d/nrpe
        only_from   = 127.0.0.1 注: 必须添加nagios的服务端的地址如果为配置允许nagios服务端的地址的话,nagios 服务器不能正常通过nrpe 进行监控该主机
6为nrpe指定固定的端口
#vim /etc/service
nrpe   5666/tcp   #NRPE

7启动并查看指定端口是否开启
   #/etc/init.d/nagios-nrpe start
 #netstat -tunlp | grep nrpe
8 在本机上验收一下,检验nrpe 是否正常运行
#/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
   返回的值为被监控服务器上安装的NRPE的版本信息
           NRPE v2.12
 9 当然可在在nagios服务端验收一下
     #/usr/local/nagios/libexec/check_nrpe -H IP(远程主机)

/.../check_nrpe -H hostip -c check_users

 注:如果远程主机和nagios上的服务器的iptables如果要是开启的话,同样也需要配置相对于的iptables 规则
 
10 当然通过NRPE,可以监控到的信息,只要在被监控服务器上的插件(/usr/local/nagios/libexec中的所有插件),都可以使用,也 就是说,只要在该文件下有对应的插件,就能监控对应的信息,当然就可以实现.注意的是,必须在远程主机中nrpe 中定义相应的命令,否则不能监控对应的资源

服务端编辑主机配置文件,调用命令监控服务。如我的一个监控邮件服务的文件

define host {
  host_name mail_server
  alias mail.nsk.northstar.com.tw
  address 10.0.30.1
  contact_groups admins
  check_command check-host-alive
  max_check_attempts 5
  notification_interval 10
#  notification_period 24*7
  notification_options d,u,r
}

# Define a service to "ping" the local machine
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       mail_server
        service_description             SMTP
        check_command                   check_nrpe!check_smtp
        }

define service{
        use             generic-service         ; Inherit default values from a template
        host_name               mail_server
        service_description     POP3
        check_command   check_nrpe!check_pop
        }
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       mail_server
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       mail_server
        service_description             check-disk
        check_command                   check_nrpe!check_df
        max_check_attempts              4
        normal_check_interval           3
        retry_check_interval            2
        notification_interval           10
        notification_options            w,u,c,r
        }

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       mail_server
        service_description             check-load
        check_command                   check_nrpe!check_load
        max_check_attempts              4
        normal_check_interval           3
        retry_check_interval            2
        notification_interval           10
        notification_options            w,u,c,r
        }

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       mail_server
        service_description             check-procs
        check_command                   check_nrpe!check_total_procs
        max_check_attempts              4
        normal_check_interval           3
        retry_check_interval            2
        notification_interval           10
        notification_options            w,u,c,r
        }


問題:

tail /var/log/messages

NRPE: Command 'check_disk' not defined

這個需要在監控服務端和被監控主機均定義相同的命令。即在服務端的commands.cfg文件和,被監控主機的nrpe.cfg文件定義。

阅读(1143) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~