第一, 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
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
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文件定義。