我想创建一个 nagios 检查,测试某个文件是否在公共网站上可用,以及该文件是否包含某行文本。
从我一直在执行的命令行:
./check_http -H 192.168.1.2 -u http://192.168.1.2/index.html -t 5 -s "公司名称"
如果我删除文件或者更改它正在寻找的文本,则它会通过并且会失败。
现在我想将其合并到我的 nagios 配置文件中。
我创建一个具有上述 IP 地址的主机,并创建一个服务,如下所示。
check_command check_http!-u /index.html -t 5 -s "公司名称"
但是,如果我更改它正在检查的文件名或正在检查的文本,它仍然会通过,即使我知道它们不存在于网站上。
我做错了什么,我想我必须测试一个不同的文件或某些东西才能让它总是通过。
答案1
当您手动执行命令时,您正在调用/usr/lib/nagios/插件/check_http正确的?
当你打电话时检查http从 nagios 配置来看/etc/nagios-plugins/config/http.cfg确定检查http命令参数。
您需要做的是创建一个自定义检查,例如:
define command {
command_name check_web_content
command_line $USER1$/check_http -H $HOSTADDRESS$ -t 60 -w 15 -c 45 -u $ARG1$ -s $ARG2$
}
然后在您的服务配置中您的 check_command 应该是这样的:
check_command check_web_content!http://www.domain.com/index.html!"Text on site"
答案2
首先需要定义一个命令:
define command {
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$ \
-u $ARG1$ -t $ARG2$ -s $ARG3$
}
然后为您的主机条目定义 check_command 如下:
check_command check_http!/index.html!5!"Company Name"
答案3
您也可以在 Nagios 配置中设置以下内容,查看实际执行的命令(查看完整命令的扩展):
debug_level=-1
debug_verbosity=2
debug_file=/usr/local/nagios/var/nagios.debug