在php中显示服务器有多少502个错误

时间:2014-04-20 07:39:04

标签: php nginx

我想使用php显示服务器(nginx)在过去24小时内有多少502个错误。我找不到一个简单的方法来做到这一点 谢谢!

3 个答案:

答案 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