我需要每隔几秒收集一次检索网页所需时间的统计数据。
我可以做一个
time wget --spider http://www.google.com/index.html
(蜘蛛不会下载该页面,只是检查它们是否存在)
通过此命令,我可以看到运行命令需要多长时间以及页面的状态(200 OK、404 NOT FOUND 等)
我遇到的问题是我需要跟踪统计数据。因此,如果我每隔几秒钟访问一次网页,并且时不时出现 404,我需要查看这些统计数据。
答案1
你可以尝试这样的方法
#!/bin/bash
URL="http://serverfault.com/"
Result=$((time wget --spider "$URL") 2>&1 | egrep 'real|response')
NumFields=$(echo $Result | awk '{print NF}')
#16 Fields if there was a 302 redirect and the result is in $13
#9 fields for 200,404 the result in in $6
if [ $NumFields -eq 16 ]
then
Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $13,$NF}')
else
Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $6,$NF}')
fi
# Outputs YYYYMMDDHHMMSS,URL,Response,Time Taken
# 20110526180254,http://www.google.oom/,302,0m1.000s
# 20110526180928,http://serverfault.com/,200,0m0.225s
# 20110526181041,http://www.google.com/fred/,404,0m0.089
echo $(date +"%Y%m%d%H%M%S"),"$URL","$Stats"
如果您使用>>
将输出重定向到文件,那么您可以将其拉入电子表格或使用 grep 等从中提取信息。
答案2
你怎么看待这件事?
curl --write-out %{time_total} --head google.ca/ >> ~/stats.txt
这将给你如下输出:
HTTP/1.1 301 Moved Permanently
Location: http://www.google.ca/
Content-Type: text/html; charset=UTF-8
Date: Wed, 25 May 2011 21:24:45 GMT
Expires: Fri, 24 Jun 2011 21:24:45 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 1; mode=block
0.076
然后您可以将其解析为电子表格。诚然,这可能不是最优雅的解决方案。您可以使用 grep 链(例如等)或更优雅的方法进行清理grep -v Location: | grep -v Content-Type: | grep -v Date
。我很好奇其他人会想出什么!
答案3
检查 Nagios 的监控功能,或者即使您不想安装完整的 Nagios,也可以检查 Nagios 插件,check_http 将为您提供性能统计数据以及简单的可解析输出。您可以使用 shell 脚本将其放入文件中,以便稍后处理。