我有一个 Shinken 设置,用于测试 2 个经过 HTTP 身份验证的域。为此,我使用以下自定义宏:
define command {
command_name new_check_http
command_line /opt/shinken/libexec/check_http $ARG1$ --warning $ARG2$ --critical $ARG3$
}
该命令的调用方式如下
check_command new_check_http!-I my_host -H my_website -p 80 -a "http_user:http_password"!10!30
当我尝试时/opt/shinken/libexec/check_http -I my_host -H my_website -p 80 -a "http_user:http_password --warning 10 --critical 30
,我得到了 302,就像我应该得到的一样。然而,Shinken 每小时都会报告 401。可能是什么问题?我如何才能看到实际正在做什么?
答案1
我认为这可能是空格和引号的问题。尝试用更多变量将其分隔开,例如:
define command {
command_name new_check_http
command_line /opt/shinken/libexec/check_http -I $ARG1$ -H $ARG2$ -p $ARG3$ -a $ARG4$ --warning $ARG5$ --critical $ARG6$
}
check_command new_check_http!my_host!my_website!80!http_user:http_password!10!30
或者更好的是,使用自定义变量:
define command {
command_name new_check_http
command_line /opt/shinken/libexec/check_http -I $_IP$ -H $_HOSTNAME$ -p $_PORT$ -a $_AUTH$ --warning $ARG1$ --critical $ARG2$
}
然后,在您的主机定义中:
define host{
host_name test
address 127.0.0.1
_IP 127.0.0.1
_HOSTNAME test
_PORT 80
_AUTH http_user:http_password
}