我想使用php显示服务器(nginx)在过去24小时内有多少502个错误。我找不到一个简单的方法来做到这一点 谢谢!
答案 0 :(得分:1)
你可以:
使用PHP解析您的nginx日志 这看起来像是:
$logfile = @file('/var/log/nginx/nginx_error.log', FILE_SKIP_EMPTY_LINES);
这将为您提供一个由日志文件的每一行组成的数组。然后,您可以使用正则表达式搜索“502”。请记住,Web服务器日志文件通常非常大。
或者,您可以使用(更好的)脚本语言(如python或perl)为您执行此任务。
答案 1 :(得分:1)
没有一种方法可以做到这一点。为了获得更好的解决方案,您可以代理服务器仅接受来自本地IP地址的请求。像这样的东西可以工作(没有经过测试)
简单的解决方案:
grep '502' access.log | wc -l
复杂的解决方案:
http {
upstream error_logger {
server 127.0.0.1:80
}
}
server {
error_page 502 /502.html
location / {
# all your config here
}
location /502.html {
internal;
proxy_pass http://error_logger/502.php;
}
}
脚本(502.php);
<?php
if($_SERVER['REMOTE_ADDR'] != '127.0.0.1') die();
// do the logging here
答案 2 :(得分:0)
cat access-com.your-project.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -rn