正常运行的网站如果发生崩溃,一般都是由于某些事件导致流量剧增,服务器无法承受导致的。这时候首先要通过 Nginx的访问日志来确认下是那个请求接口流量过高,这时候就用到了 GoAccess。
GoAccess 是一款 Nginx 访问日志分析工具,通过 GoAccess 分析 Nginx 访问日志生成的报表可以帮助我们找到网站高峰的访问时段,找到请求量最高的接口,从而着手进行优化处理。
安装 GoAccess
下面就来讲下如何使用 GoAccess,go access 安装很简单,
如果是 Mac os 可以直接通过 brew install goaccess
安装。
如果是 Centos 系统可以执行 yum -y install goaccess
安装。
各系统下的安装方法参考: GoAccess 下载安装
使用 GoAccess
假如我已经从服务器拿到了一个 Nginx 访问日志文件 access.log,
可以执行以下命令生成分析报表:
goaccess -f access.log -o result.html
-f
: 指定日志文件-o
: 指定报表路径
执行此命令会默认读取
/usr/local/Cellar/goaccess/1.2/etc/goaccess.conf
, Mac os 下默认文件在此路径,其他操作系统各不相同,
执行以上命令默认一般会报错:
Fatal error has occurred
Error occured at: src/parser.c - parse_log - 2705
No time format was found on your conf file.
提示没有 time format
, 即我们需要配置日志的时间格式,
打开默认的配置文件 goaccess.conf
, 开启这两个配置:
time-format %H:%M:%S
date-format %d/%b/%Y
以上配置分别配置了 access.log 中请求时间所用的时间格式和日期格式。
修改保存后重新执行 goaccess -f access.log -o result.html
, 用浏览器打开 result.html, 我们便得到了分析结果:
“Request Files” 显示了请求地址的访问量排名,一般都是访问量最高的地址导致的系统崩溃:
“Time Distribution” 可以看到不同时间端的请求量分布:
如何根据时间切割日志?
另外如果想只分析 access log 中指定时段的访问日志,可以将指定时段的日志单独提取到一个文件中,再用 GoAccess 进行分析:
sed -n "/31\/May\/2018:09:00:00/,/31\/May\/2018:11:00:00/"p access.log > access1.log
以上命令表示将 5.31 日 9点到 11 点的请求日志提取到 access1.log
中
转载请注明:大后端 » Nginx 访问日志分析工具 GoAccess 使用简单教程