以下为安置配置,相关nsca软件可到http://www.nagios.org上下载。
由于nsca在client上是主动送结果到服务器,所以在server端只要起一个nsca服务,由client端向server端发送数据就行了,所以在
server端只需要nsca脚本和nsca配置文件即可,在client只需要send_nsca脚本和send_nsca的配置文件.
 
3,nsca的安装.和配置及使用
解压后./configure&&make all即可,编译完成后的起动脚本在src目录下,配置文件在sample-config下。
平常我们都会把nsca和nsca.cfg复制到相应的目录中
注:nsca.cfg要修改的几处地方
nsca_user=nagios
nsca_group=nagios
password=nsgiospassword
decryption_method=1

Server端: /usr/local/nagios/bin/nsca -d -c /usr/local/nagios/etc/nsca.cfg起服务

Client端(安装和服务器端一致即可):修改send_nsca.cfg文件
password=nagiospassword
decryption_method=1
同server端一致

我们一共需要传送以下几个参数到server(对应的参数):
A client hostname,这个必须和监控机上设置的hostname一致!
B service description,服务定义,同样也必须跟监控机上定义的servicename一致
C 报警等级,0=ok,1=warning,2=critical,必须是整型
D 报警内容,这个可以自由发挥,以能够清楚描述报警信息为原则.
使用以下语句可以达到我们的目的:
echo "$NSCACLIENT;$SERVICEDESC;$ALTLEVEL;$MSG"|$SEND_NSCA -H $NSCA_SERVER -to 10 -d ";" -c "$NSCA_CONF"
以上语句里面,$NSCACLIENT=客户端的hostname,必须与监控机上定义的hostname一致
$SERVICEDESC为服务描述,必须与监控机上定义的servicename一致
$ALTLEVEL为报警等级,根据脚本执行结果返回
$MSG 为返回的信息
以上4项内容用分号分隔,然后通过send_nsca的 –d “;”参数来分别区分并发送给nagios监控机以达到发报警的目的!
例:
echo "mail163;NSCA;2;help me wumingzi—uptime over" | ./send_nsca -H $IP -to 10 -d ";" -c /usr/local/nagios/etc/send_nsca.cfg
注:mail163:是指nagios监控机中的定义的host_name,也可以是机器IP
NSCA是指nagios监控机中的service_description
2是指传过去的状态值,这里为critical
help me wumingzi—uptime over是指的状态说明,这里只是一个测试
最后就是nagios里面的定义
define host{
        use                     generic-host 
        host_name               mail163
        alias                        mail163-211.153.63.2
        address                 211.153.63.2
        }
define service{
        use                             generic-service
        service_description             NSCA
        active_checks_enabled           0             #设置为被动模式
        check_command                   check_dummy!2
        }

        active_checks_enabled           0
        passive_checks_enabled          1
就是定制被动监控,取消主动监控
脚本还需要check_dummy(这个地方随便定义即可,比如check_tcp,因为被动模式,服务器端只收取客户端的信息,所以这个地方不关键,当然如果有使用到check_freshness,默认为0,想让在故障时由服务端执行对应的指令)来配合
 
另外在commands.cfg中加入:
define command {
        command_name check_dummy
        command_line $USER1$/check_dummy $ARG1$ "$ARG2$"
        }
 
最后思路:我们就很明白的想,在服务端检查各种需要的信息,把问题汇总发送到$MSG中,当然也要注意$ALTLEVEL的状态,方便在nagios中浏览,如果懂的点shell,那就简单不过了,自由发挥。
测试小技巧:如果在公司内网(不同部门之间操作还要申请等),无法操作监控,在nagios的服务器端ssh -f -N -4 -R 5667:127.0.0.1:5667 root@211.153.63.2 ,在输入被控端机器密码即可 (当然也可做相应的路由)