Nginx 访问日志分析工具 GoAccess 使用简单教程

教程 shanhuhai 12112℃ 0评论

正常运行的网站如果发生崩溃,一般都是由于某些事件导致流量剧增,服务器无法承受导致的。这时候首先要通过 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” 显示了请求地址的访问量排名,一般都是访问量最高的地址导致的系统崩溃:

goaccess 报表

“Time Distribution” 可以看到不同时间端的请求量分布:

goaccess 报表时间分布

如何根据时间切割日志?

另外如果想只分析 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 使用简单教程

付费咨询
喜欢 (2)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址