nagios 内置宏$HOSTADDRESS$ 失效导致的报错--更新"check_http的正确用法"

2680阅读 0评论2013-07-19 fathermotherson
分类:系统运维

define command{
        command_name    check_tcptest
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
        }


define service {
     use               local-service
     host_name         localhost
     service_description    Check_ssh_121
     check_command          check_tcptest!192.168.0.121!22
}

结果报错

然后我把command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$换成
command_line    $USER1$/check_tcp -H $ARG1$ -p $ARG2$就好了

这不就说明$HOSTADDRESS$ 这个东西失效了么

这玩意儿失效波及了许多监控服务比如smtp的,http的。


2014-01-19更新:
抱歉,原来这个不是宏$HOSTADDRESS$ 失效。是之前我的用法有问题。之前我认为远程主机的服务监控都是通过check_nrpe!command 这种形式来进行监控,导致我用check_http的时候也是check_nrpe!check_http 这样的形式去监控,当时想,如果是这种形式去监控,相当于自己向自己发http,网络因素很可能检测不到,于是我想放在本地去实现,但是本地的话,得定义检测主机的IP吧,于是出现了上面的“check_command          check_tcptest!192.168.0.121!22”  这种用法,这种用法会导致报错的原因其实是我多此一举了。
内置的宏$HOSTADDRESS$这个参数是会自动读取host_name这个参数,不用自己再手动写一次,check_tcp正确的写法应该是:
check_command          check_tcp!22

同样的,check_http的正确用法应该是这样:
比如想监控这个url:
先定义命令:
# 'check_http_url' command definition
define command{
        command_name    check_http_url
        command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
        }

再定义服务:
define service {
        use               local-service
        host_name         ct_server111
        service_description    aws.amazon.com
        check_command          check_http_url!'/cn/ec2/'
        contact_groups    admin-phone
}

看见没,“check_command          check_http_url!'/cn/ec2/'”  之前的多此一举的错误用法是这样:  check_command          check_http_url!aws.amazon.com!'/cn/ec2/'

上一篇:check_smtp引发的maillog报错
下一篇:将日志数据自动写入excel的脚本