2011年(6)
分类: LINUX
2011-08-11 12:34:46
Nagios NSCA 被动监控
首先安装nagios
略
从sourceforge下载最新的NSCA 目前使用2.7.2
下载源码包,然后解压缩编译
./configure
Make all
服务端
编译完成以后可以在src目录下找到nsca (服务端)和send_nsca(客户端)程序。另外有nsca.xinetd文件,用做守护进程使用
把服务端程序拷贝到/usr/local/nagios/bin/目录下。
然后拷贝sample-file/nsca.cfg到/usr/local/nagios/etc/目录下
最后拷贝src/nsca.xinetd 文件到/etc/xinetd.d/目录下。查看一下文件目录是否正确 only from留空。然后不要忘记编辑
/etc/services
添加:
Nsca 5667/tcp #nsca
编辑nsca.cfg
Debug=1
最后不要忘记修改nagios 目录权限
#chown –R nagios.nagios /usr/local/nagios
重启xinetd
Service xinetd restart
检查:
使用netstat –an 检查5667端口是否已经开始监听
使用命令测试发送消息服务器是否可以接收到:
Nsca-2.7.2目录中执行
首先编辑一个名为test的文本文件
这个就是所发送的信息了。信息格式如下:
主机名 服务名 状态码 详细信息
Src/send-nsca localhost –c
sample-file/send-nsca.cfg
Tail –f /var/log/message查看系统日志输出
Nagios 被动检测配置
编辑command.cfg
define command{
command_name check_dummy
command_line $USER1$/check_dummy $ARG1$
}
这部分是设置非主动检测服务器不会返回异常状态的命令
编辑template.cfg
增加被动检测模板
define service{
use generic-service
name passive_service
active_checks_enabled 0
passive_checks_enabled 1 # We want only passive checking
flap_detection_enabled 0
register 0 # This is a template, not a real service
is_volatile 0
check_period 24x7
max_check_attempts 1
normal_check_interval 5
retry_check_interval 1
check_freshness 0
contact_groups admins
check_command check_dummy!0
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
stalking_options w,c,u
}
编辑host.cfg
define host{
use linux-server
host_name DnsCheck-shenyang
alias DnsCheck-shenyang
address guanwei1225.gicp.net
check_command check_dummy!0
}
编辑service.cfg
define service{
use passive_service
service_description LoadAVG
hostgroup_name DnsCheckGroup
}
以上都设置完成就完成服务端的配置了
客户端
同样先编译
./configure
Make all
通过服务器配置命令客户端就是使用send-nsca命令实现
因此cp src/send_nsca /usr/local/nagios/bin/
Cp sample-file/send_nsca.cfg /usr/local/nagios/etc
至于客户定时发送的实现方式可以直接写crontab加命令,我是用脚本实现的,具体脚本如下:
#!/bin/sh
#Made by BlackJack
set -e
host_name=$1
svc_name=$2
Load_ARG="-w 5 -c 10"
#echo "$host_name\t$svc_name\n"
case "$2" in
check_load)
output=`/usr/local/nagios/libexec/$2 $Load_ARG`
status=`echo $?`
#echo $output
echo "$host_name\t$svc_name\t$status\t$output">/tmp/nsca.out
/usr/local/nagios/bin/send_nsca -H 220.231.27.130 -c /usr/local/nagios/etc/send_nsca.cfg
;;
Esac
使用command hostname check_load
就可以自动发状态
执行结果如果返回这个就是正常的
1 data packet(s) sent to host successfully.
接下来只要手动把命令加入crontab里面就可以了
*/5 * * * * /bin/sh /home/bin/nsca.sh DnsCheck-xian check_load
这样就万事大吉了,你可以在nagios 里面看到这么一条记录
如果还有什么不明白可以参照 nagios 的nsca PDF文档
http://nagios.sourceforge.net/download/contrib/documentation/misc/NSCA_Setup.pdf