我们有几个由 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