Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27758
  • 博文数量: 6
  • 博客积分: 286
  • 博客等级: 二等列兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-11 19:27
文章分类
文章存档

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

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