我收到大量流量,导致我的小型服务器崩溃。我可以安装什么东西来实时检查我的 Apache 流量?最好是 Web 界面。我想看看这些请求的目的和占用最多资源的请求。
答案1
阿帕奇的mod_status可以帮到你。对于更复杂的故障排除,你可能需要自定义日志格式(例如,在日志中包含 %D)并编写某种解析器。
答案2
您是否尝试过使用 Apache 的扩展状态?
答案3
嗯,你需要解析 apache 日志,有很多工具可以做到这一点。我自己写了一些 awk 脚本。
echo "Hits by source IP:"
echo "======================================================================"
awk '{print $2}' "$1" | grep -ivE "(127.0.0.1|192.168.100.)" | sort | uniq -c | sort - rn | head -25
echo "The 25 most popular pages:"
echo "======================================================================"
awk '{print $6}' "$1" | grep -ivE '(mod_status|favico|crossdomain|alive.txt)' | grep -ivE '(.gif|.jpg|.png)' | sed 's/\/$//g' | sort | uniq -c | sort -rn | head -25
echo
echo "The 25 most popular pages (no js or css):"
echo "======================================================================"
awk '{print $6}' "$1" | grep -ivE '(mod_status|favico|crossdomain|alive.txt)' | grep -ivE '(.gif|.jpg|.png|.js|.css)' | sed 's/\/$//g' | sort | uniq -c | sort -rn | head -25
echo "The 25 most common referrer URLs:"
echo "======================================================================"
awk '{print $11}' "$1" | \
grep -vE "(^"-"$|/www.$host|/$host)" | \
sort | uniq -c | sort -rn | head -25
echo "Longest running requests"
echo "======================================================================"
awk '{print $10,$6}' "$1" | grep -ivE '(.gif|.jpg|.png|.css|.js)' | awk '{secs=0.000001*$1;req=$2;printf("%.2f minutes req time for %s\n", secs / 60,req )}' | sort -rn | head -50
exit 0
只需输入一个名为“apache_stats”的文件并像“./apache_stats”一样运行它。
答案4
M/Monit 是付费的,提供更多功能(以及更丰富的 GUI)。Monit 是免费的,允许您进行监控。当服务器负载超过某个阈值时,您可以收到电子邮件警报。我自己使用它来监控服务器负载并做出相应的响应。