如何通过 http 使用 Nagios 检查温度?

如何通过 http 使用 Nagios 检查温度?

我们有几个由 nagios 监控的服务器机架。现在我们想通过在机架外安装 Nagios 来监控机架内的温度。服务器机架内的温度由机架内运行的服务器测量,这些服务器通过 http 提供温度。请求http://serverinrack12/temp提供以下四个之一“Nagios 兼容”命令消息

OK - temp 25 °C
WARNING - temp 45 °C
CRITICAL - temp 65 °C
UNKNOWN - cannot read temp

HTTP 响应代码始终是HTTP/1.1 200 OK

如果服务器上无法进行任何更改,Nagios 如何解析此 http 响应?

是否有 Nagios 命令可以通过 http 读取服务状态?如何将此 Nagios 命令集成到命令定义中,例如

define command {
    command_name    check_http_temp
    command_line    .... -H $HOSTADDRESS$
}

理想情况下,有一个命令可以通过添加 id 来调用此 temp-checks,以支持连接到此服务器的多个温度计:

http://serverinrack12/temp?id=1

最后一个问题:我们如何通过 http 使用 Nagios 获取温度性能数据?

答案1

您需要编写一个插件,或者找到一个可以解析网页内容的插件。Nagios 并不关心根本返回的字符串是什么(因为这是供人类使用的)。Nagios 只关心退出代码(又称返回值)。

您无需在服务器上安装任何东西即可完成此操作。例如,您可以编写一个 bash 脚本,/temp通过 curl 获取内容,然后进行一些字符串匹配。将“bash”替换为您选择的脚本语言。

check_http据我所知,股票插件可以查找特定的字符串,但它不能为不同的字符串返回不同的状态值。

如果您不想写任何东西,请深入了解 Nagios Exchange 和/或 Monitoring Exchange。

答案2

看起来您正在执行的检查只是为了查看 http 服务是否处于活动状态。这不会尝试解析内容。
请查看 check_http_content 插件这里

答案3

尝试使用 -C 和 -W 选项的这个 perl 脚本: check_http_enhanced

相关内容