我们有几个由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 。
如果服务器上没有任何东西可以改变,那么这个http响应如何被Nagiosparsing呢?
是否有一个Nagios命令通过http读取服务状态? Nagios命令如何被集成到命令定义中,例如
define command { command_name check_http_temp command_line .... -H $HOSTADDRESS$ }
理想情况下,有一个命令可以通过添加一个ID来支持几个连接到这个服务器的温度计来调用这个临时检查:
http://serverinrack12/temp?id=1
最后一个问题:如何通过http获得Nagios的温度性能数据?
你需要编写一个插件,或者find一个parsing网页内容的插件。 Nagios根本不关心返回的string是什么(就像人类消费一样)。 Nagios只关心退出代码(AKA返回值)。
你可以在服务器上安装任何东西。 例如,您可以编写一个bash脚本,通过curl获取/temp内容,然后进行一些string匹配。 Sub“bash”为您select的脚本语言。
股票check_http插件可以查找某个string,但不能为不同的string返回不同的状态值,据我所知。
如果您不想写点东西,可以在Nagios Exchange和/或Monitoring Exchange上进行挖掘。
它看起来像你正在执行的检查只是看看http服务是否活跃。 这不会尝试parsing内容。
看看这里的 check_http_content插件
尝试使用-C和-W选项的此perl脚本: check_http_enhanced