Icinga Monitor 网站用于字符串

Icinga Monitor 网站用于字符串

我正在尝试使用 Icinga 监控网站上的特定字符串。当我从命令行运行插件时,它似乎运行良好,但在 Icinga-Web 中,无论我输入什么字符串,它总是显示为成功。

#Doesn't Work - always returns ok
define service {
    host_name                  mywebserver
    service_description             Check Website
    servicegroups   Websites
    check_command                   check_http!-s "no such string" -H www.mysite.com -u /apath/ -t 7
    use                             generic-service
    notification_interval           60 ; set > 0 if you want to be renotified
}

奇怪的是,如果我按如下方式运行位于 /usr/lib/nagios/plugins/check_http 中的插件,它会给我我所期望的结果:

./check_http -H www.mysite.com -u "/apath/" -s "no such string"

HTTP CRITICAL: HTTP/1.1 200 OK - string 'no such string' not found on...

为什么会这样?

答案1

显然,您的手动测试和 Icinga 配置是不同的。

去找到 check_http 命令的定义。它几乎肯定没有处理你传递给它的 ARG,至少不是按照你想象的方式。

根据插件路径判断,我猜你使用的是 Ubuntu 或 Debian。去看看/etc/nagios-plugins/config/http.cfg,你可能会发现类似这样的内容:

# 'check_http' command definition
define command {
    command_name    check_http
    command_line    /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' -I '$HOSTADDRESS$' -f follow
}

注意它不使用任何 ARG1、ARG2 等,因此它完全忽略了所有-s "no such string" -H www.mysite.com -u /apath/ -t 7

您应该编写一个新命令来接受您想要使用的参数,然后将您的 check_command 更改为类似的内容check_http_path_expect!/apath/!"no such string",作为示例。

阅读文档页面了解宏及其工作原理会有所帮助。

相关内容