本文环境:RHEL 5.3 x64
被动监测,就是指由被监测的服务器主动上传数据到Nagios监控系统中。这种监测方式提高了实时性(出现问题的时候,被监测的服务器可以及时上传数据通知Nagios,从而使管理员可以尽快作出处理,而不用像主动监测中一样,非要等到下一个监测周期才能获知被监测服务器的状态)。NSCA就是可以实现Nagios被动监测的一个程序。
安装NSCA需要系统中已经安装libmcrypt库,否则不能使用加密数据传输功能,configure的时候会提示:
*** Could not run libmcrypt test program, checking why…
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means LIBMCRYPT was incorrectly installed
*** or that you have moved LIBMCRYPT since it was installed. In the latter case, you
*** may want to edit the libmcrypt-config script: no
可以到这个网址去查看关于该库的更详细的信息,到这里去下载。如果你不需要加密传输,则可以忽略这个问题,照样能编译安装。如果你一直装不上这个东西,我建议你不要纠结于这个问题,不理会它即可。
文章来源:http://www.codelast.com/
然后,你需要把编译出来的一些文件拷贝到与Nagios相关的几个目录下。
注意:下面的描述中所涉及的路径,都是相对于默认安装的Nagios来说的,如果你在安装Nagios的时候自定义了安装目录,那么你也要做相应的更改。
进入NSCA的编译目录:
cd nsca-2.7.2/
将NSCA的可执行程序拷贝到Nagios的bin目录下:
cp src/nsca /usr/local/nagios/bin/
将NSCA的示例配置文件拷贝到Nagios的etc目录下:
cp sample-config/nsca.cfg /usr/local/nagios/etc/
修改NSCA的配置文件 /usr/local/nagios/etc/nsca.cfg,要修改的地方一般来说只有这几处:
server_address=XXX.XXX.XXX.XXX
这里改成你的IP地址。如果有多块网卡,那么这里就填写你想让NSCA监控的那块网卡的IP地址(当然,客户端向NSCA发送被动监测数据时,也要保证数据是从这块网卡上过的,否则NSCA将接不到数据)。
password=XXX
这里改成你设置的密码,即客户端向NSCA发送被动监测数据时,需要提供这个密码,否则将无法成功发送。
如果你没有特殊需求,其余参数不用修改。
然后修改NSCA配置文件的权限:
chown nagios.nagcmd /usr/local/nagios/etc/nsca.cfg
chmod g+r /usr/local/nagios/etc/nsca.cfg
文章来源:http://www.codelast.com/
其实这样就算安装好了NSCA,可以启动它了,但是,这并不是一个好办法,最好是在xinetd下(xinetd是一大堆服务的管理程序),以服务的形式来运行NSCA,方法如下:
(1)编辑文件 /etc/services,在最开头添加一行:
nsca 5667/tcp # NSCA
将编译NSCA得到的xinetd配置文件拷贝到它应该在的目录下(并同时重命名,必须的):
cp sample-config/nsca.xinetd /etc/xinetd.d/nsca
重启服务:
service xinetd restart
再查看端口是否被监听了:
netstat -an | grep 5667
输出应类似于:
tcp 0 0 0.0.0.0:5667 0.0.0.0:* LISTEN
表明已被监听了——NSCA服务运行起来了。
(2)那么,NSCA如何与Nagios整合来呢?现在,就是配置Nagios的时刻了:
在service的模板文件中(如果你没有自定义的话,是/usr/local/nagios/etc/objects/templates.cfg 文件),添加一个服务模板定义:
define service{
name passive_service
use generic-service
max_check_attempts 1
active_checks_enabled 0
passive_checks_enabled 1
normal_check_interval 5
retry_check_interval 1
notification_interval 10
notification_options w,u,c,r,f,s
}
然后就可以在你平常定义服务的文件里定义一个服务了,这里我们定义一个测试用的服务:
define service{
use passive_service
host_name localhost
service_description CheckDummy
check_command check_dummy!0
notifications_enabled 1
}
这里使用了check_dummy命令,在Nagios默认安装情况下,是找不到这个命令定义的,我们手工添加上去:编辑 /usr/local/nagios/etc/objects/commands.cfg 文件,添加一个命令定义:
define command{
command_name check_dummy
command_line /usr/local/nagios/libexec/check_dummy $ARG1$
}
OK,现在检查一下Nagios配置文件的合法性:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有错误的话,就可以重启Nagios服务了:
service nagios restart
文章来源:http://www.codelast.com/
(3)
一个被动监测服务已经定义好,我们该如何向它发送数据呢?怎么测试?下面,就是测试到来的时刻:
编写一个测试文件,假设为 /root/pasv.txt ,内容只有一行:
127.0.0.1[TAB分隔符]CheckDummy[TAB分隔符]0[TAB分隔符]Here we done!
其中,127.0.0.1是NSCA监听的IP地址,CheckDummy是你在Nagios中定义的被动监测服务的名字,0表示告诉NSCA服务正常(1为WARNING,2为CRITICAL,其他值均为UNKNOWN),最后的“Here we done!”是你要向服务器发送的附加信息。
然后,到编译NSCA的目录下,找到程序send_nsca,以及配置文件send_nsca.cfg,执行以下命令:
./send_nsca localhost -c ../sample-config/send_nsca.cfg < /root/pasv.txt
这里要注意
send_nsca和
send_nsca.cfg的路径。
如果输出为:
1 data packet(s) sent to host successfully.1 data packet(s) sent to host successfully.
则表明成功!
照这样的方法,你就可以让任意服务器来主动发送监测数据给Nagios了。但别忘了,如果要授权一台服务器上传数据给NSCA的话,需要修改 /etc/xinetd.d/nsca 文件的“only_from = XXX.XXX.XXX.XXX”字段,来添加更多的IP地址(同时要重启xinetd服务)——各个IP地址之间用空格隔开。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):
你好!! 你寫的文件是我目前看來最清楚的,請問nsca啟動腳本沒有談到,是不需要嗎??
請問是否有Client端設定的文件嗎?
我不想使用nrpe的套件 完全用nsca來進行全面監控。
可否請貴人分享完整的教學,真誠感謝
抱歉,帮不了你了,因为我写这篇文章已经是很久以前的事了,现在不记得当时的情况了
nsca的日志文件的路径是在哪里呢
/var/log/messages