我正在寻找一个简单的程序或脚本,你给它一个 URL,它会执行以下操作:
- 检查是否可以打开到该 URL 的连接并报告响应时间
检查页面加载时间并报告该数字
当网站无响应时报告一些错误代码或其他数字
在以下情况后退出:连接失败、页面加载成功或用户指定的预定秒数后
我的目的是将此功能作为外部程序集成到 Zabbix。我在谷歌上搜索,但找不到。
答案1
你可以通过以下方式组合来做你想做的事情time
和wget
命令-例如:
time wget -q http://www.google.com/
time
将打印完成命令所花费的时间(以秒/秒的几分之一为单位)wget
,并且整个混乱的返回代码将是的wget
返回代码(0 =成功,非零表示各种失败)。
这可以进一步包装在适当的脚本中,以确定页面是否成功检索并生成适合 Zabbix 获取和使用的输出。
答案2
我使用以下脚本,其中的基本思想可能借鉴自其他地方。它使用 curl 统计数据:
estadistica () {
local site=$1
echo $site
echo ${site} | sed -n 's/./-/gp'
curl -w '
Lookup time:\t%{time_namelookup} s
Connect time:\t%{time_connect} s
Pretransfer time:\t%{time_pretransfer} s
Starttransfer time:\t%{time_starttransfer} s
Size download:\t%{size_download} bytes
Speed download:\t%{speed_download} bytes/s
Total time:\t%{time_total} s
' -o /dev/null -s $site
echo
}
for i in ${@}; do
estadistica $i
done
假设它被命名为 webstats;它的工作原理如下:
~/src$ bash webstats http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page http://www.google.com
http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page
-----------------------------------------------------------------------------------------------
Lookup time: 0,009 s
Connect time: 0,139 s
Pretransfer time: 0,139 s
Starttransfer time: 0,284 s
Size download: 37298 bytes
Speed download: 57153,000 bytes/s
Total time: 0,653 s
http://www.google.com
---------------------
Lookup time: 0,084 s
Connect time: 0,147 s
Pretransfer time: 0,147 s
Starttransfer time: 0,218 s
Size download: 218 bytes
Speed download: 1000,000 bytes/s
Total time: 0,218 s
如果出现问题,您可以知道(并因此告诉 zabbix),因为生成的数据不合逻辑:
~/src$ bash webstats http://thisdoesntexist
http://thisdoesntexist
----------------------
Lookup time: 0,000 s
Connect time: 0,000 s
Pretransfer time: 0,000 s
Starttransfer time: 0,000 s
Size download: 0 bytes
Speed download: 0,000 bytes/s
Total time: 0,000 s
编辑:curl 的超时选项:
只是为了回答你的评论,curl 有一个超时选项;来自它的手册页:
--connect-timeout <seconds>
Maximum time in seconds that you allow the connection to the
server to take. This only limits the connection phase, once
curl has connected this option is of no more use. See also the
-m/--max-time option.
答案3
http://phantomjs.org/会给你更多的实时性,因为它会加载页面的所有资源并执行 JS。语法非常简单(纯 JavaScript)
答案4
或者,您可以很容易地编写一个简单的脚本来自己执行此操作并以特定的格式输出。