如何使用Nagios的check_http检查包含Hash的URI的内容?

尝试

check_http -H www.example.com -f follow -p 8080 -u /hello/#/world -s "content" 

结果

 HTTP WARNING: HTTP/1.1 404 Not Found - X bytes in 0.00X second response time |time=0.00XYZ 

分析

虽然已经有多个源文件被读取[ 1,2,3,4 ]和一个Wget,即wget www.example.com:8080/hello/#/world返回OK,但是check_http是否不起作用还不清楚。

也许#是造成一个问题。 根据这个文档 , #是一个锚,这意味着如果var x表示x#/world ,但是这无助于解决问题。

使用wget下载www.example.com ,随后检查worldbutton,指示此button与JavaScript源相关联。 这个发现也没有帮助解决这个问题。


尝试两个

 check_http -H www.example.com -f follow -p 8080 -u /hello/\#/world -v 

结果二

 GET /hello/#/world HTTP/1.1 User-Agent: check_http/vX (nagios-plugins X) Connection: close Host: www.example.com:8080 http://www.example.com:8080/hello/#/world is X characters STATUS: HTTP/1.1 404 Not Found **** HEADER **** Server: Apache-Coyote/X Content-Type: text/html;charset=utf-8 Content-Length: X Date: Thu, Day Month Year Time GMT Connection: close **** CONTENT **** <html><head><title>ApplicationServer - Error report</title><style></style> </head><body><h1>HTTP Status 404 - /hello/#/world</h1><p><b>type</b> Status report</p><p><b>message</b> <u>/hello/#/world</u></p><p><b>description</b> <u>The requested resource (/hello/#/world) is not available.</u></p><h3>ApplicationServer</h3></body></html> HTTP WARNING: HTTP/1.1 404 Not Found - X bytes in 0.00X second response time |time=0.00Xs;;;0.000000 size=XB;;;0 

分析二

实用

如果想要查看http://www.example.com:8080/hello/#/world ,则必须导航到http://www.example.com:8080/hello并点击worldbutton。 一旦button被点击,内容可以使用萤火虫查看和检查。

技术

该URL使用Wget下载。 该页面包含多个表示button的JavaScript源代码,例如:

 <script src="button.js"></script> <script src="world.js"></script> 

function和技术观点之间存在差异。 在使用Wget下载的页面中省略了使用Firebug可以查看和检查的内容。

check_http插件只会看到wget / curl显示了什么,所以它不能检查你想要检查的东西。

如果你想要一个可以真正运行客户端JavaScript的检查,你需要用check_webinject , Selenium和check_selenium (如本文所讨论的 ),或者Sahi和Sakuli来看看WebInject 。

#是锚定的,这是正确的。 这些是由客户端解释,而不是服务器。 锚点是网站的一部分,所以必须加载整个网站并在其中search锚点。

您应该使用以下检查:

 check_http -H www.example.com -f follow -p 8080 -u /hello/ 

稍后,您可以添加-s world来searchHTML内容中的“世界”(如果它在那里,而不是通过另一层JavaScript添加的话)。