试图
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
并随后检查world
按钮,表明此按钮与 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并点击world
按钮。点击按钮后,可以使用 firebug 查看和检查内容。
技术的
该 URL 使用 Wget 下载。该页面包含多个代表按钮的 JavaScript 源,例如:
<script src="button.js"></script>
<script src="world.js"></script>
功能视图和技术视图之间存在差异。使用 Wget 下载的页面省略了可以使用 Firebug 查看和检查的内容。
答案1
答案2
是#
在锚点中,没错。这些是由客户端而不是服务器解释的。锚点是网站的一部分,因此必须加载整个网站并在其中搜索锚点。
您应该使用以下检查:
check_http -H www.example.com -f follow -p 8080 -u /hello/
稍后您可以添加-s world
在 HTML 内容中搜索“world”(如果它存在并且不是通过另一层 JavaScript 添加的)。
答案3
我发现 phantomjs-nagios 插件(check_http_load_time.rb)在这种需要呈现带有 JavaScript 的 Web 应用程序的场景中非常有用。
该插件在后台使用 phantomjs 来渲染整个页面,从而模拟最终用户的浏览器。它将输出总渲染时间,并显示请求数和加载的 dom 元素数:
$ ./check_http_load_time.rb -u "https://myapp.example.com/#load" -P -w 5 -c 10
OK: https://myapp.example.com/#load load time: 1.14 | load_time=1142.0ms size=428013 requests=39 dom_elements=55 load_time_initial_req=194ms
该插件还支持阈值,例如,您可以定义加载元素、请求或总大小的阈值范围。
看https://github.com/hggh/phantomjs-nagios/blob/master/check_http_load_time.rb更多细节。
注1:Phantomjs不再开发。
注2:由于该插件依赖于Phantomjs,因此插件开发也已停止。
注意 3:Ubuntu 18.04 上的 Phantomjs 软件包已损坏,插件可能会给Could not parse JSON from phantomjs
您带来麻烦。在这种情况下,请从https://phantomjs.org/download.html并告诉插件使用参数使用 phantomjs 的替代路径-p
。