我想要使用我们的 Nagios 检查 Web 应用程序是否在 Tomca7 上运行。我决定使用带有正则表达式的 check_http 插件。我正在解析 tomcat 的状态页面并检查“正在运行”列是否为真。状态页面的源代码如下所示(已剪辑):
<td class="row-left" bgcolor="#FFFFFF" rowspan="2"><small>Applicationname</small></td>
<td class="row-center" bgcolor="#FFFFFF" rowspan="2"><small>true</small></td>
这 2 条信息位于 2 行不同的内容中。因此,我要检查的内容如下:
./check_http -I 111.111.111.111 -p 8080 -a user:password -u /manager/html -rl 'Applicationname</small></td>\n.<td class="row-center" bgcolor="#FFFFFF" rowspan="2"><small>true'
问题是,当我使用参数“-l”时,插件的响应始终为真(“HTTP OK”)。此外,当我像这样修改搜索字符串以强制执行关键操作时:
./check_http -I 111.111.111.111 -p 8080 -a user:password -u /manager/html -rl 'Applicationname</small></td>\n.<td class="row-center" bgcolor="#FFFFFF" rowspan="2"><small>fail_true'
我不知道为什么会发生这种情况。有人知道吗?谢谢,Arny
答案1
为什么不使用/manager/text/list
来查看纯文本管理器界面而不是 HTML 界面:
./check_http -I 111.111.111.111 -p 8080 -a user:password -u /manager/text/list -s 'Applicationname:running'
HTTP OK: HTTP/1.1 200 OK - 510 bytes in 0.003 second response time |time=0.003004s;;;0.000000 size=510B;;;0
答案2
来自手册页检查http“-s, --string=STRING 内容中预期的字符串”您尝试过使用“-s”吗?
$ ./check_http -I localhost -p 80 -s True -u /test.html
HTTP CRITICAL: HTTP/1.1 200 OK - string 'True' not found on 'http://localhost:80/test.html' - 419 bytes in 0.001 second response time |time=0.000667s;;;0.000000 size=419B;;;0
$ ./check_http -I localhost -p 80 -s true -u /test.html
HTTP OK: HTTP/1.1 200 OK - 419 bytes in 0.001 second response time |time=0.000776s;;;0.000000 size=419B;;;0
$ cat /var/www/html/test.html
<td class="row-left" bgcolor="#FFFFFF" rowspan="2"><small>Applicationname</small></td>
<td class="row-center" bgcolor="#FFFFFF" rowspan="2"><small>true</small></td>