Nginx 的访问日志中蕴含丰富的信息,然而直接阅读对于大多数人来说是一项艰巨的任务。但我们有 GoAccess 这样的强大工具,它能够帮助我们轻松地分析和可视化 Nginx 的访问日志。
工具安装
对于基于 Debian 的系统「如 Ubuntu」,可以使用以下命令安装:
1 | sudo apt-get update |
对于基于 Red Hat 的系统「如 CentOS」,可以使用以下命令安装:
1 | sudo yum -y install goaccess |
源码安装
如果想要从源码安装 GoAccess,可以按照以下步骤操作。先下载 GoAccess 的源码包:
1 | wget https://tar.goaccess.io/goaccess-1.4.tar.gz |
再解压并编译安装:
1 | tar -xzvf goaccess-1.4.tar.gz |
配置工具
我们需要对 GoAccess 进行配置,确保它能够正确地解析 Nginx 的访问日志。GoAccess 配置文件通常位于 /etc/goaccess/goaccess.conf
。对于 Nginx 的默认日志格式,可直接使用--log-format=COMBINED
参数。如果 Nginx 配置了自定义的日志格式,需在 GoAccess 的配置文件中指定相应的日志格式。例如:
1 | log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" |
还需指定日期和时间的格式,以确保 GoAccess 能够正确地解析日志文件中的日期和时间信息。例如:
1 | date-format %d/%b/%Y |
分析日志
在终端直接运行 GoAccess,它会进入一个交互式的界面,显示日志分析结果。在交互式界面中可使用键盘方向键和数字键来浏览和查看不同的统计信息。例如:
1 | goaccess /var/log/nginx/access.log --log-format=COMBINED |
GoAccess 可将分析结果输出为 HTML 格式的报告,方便在 Web 浏览器中查看。下面的命令将生成一个名为 report.html
的文件,包含丰富的统计信息和图表:
1 | goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED |
GoAccess 支持实时监控 Nginx 访问日志,可动态地更新统计信息。如要启用实时监控,可以使用以下命令:
1 | --real-time-html --daemonize |
启动一个后台进程,实时分析日志文件,并将结果输出到指定的 HTML 文件中,完整参考命令如下:
1 | goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --daemonize |
分析结果解读
GoAccess 提供了丰富的统计信息和图表,帮助我们全面了解网站访问情况,包括访问概览:
维度 | 描述 |
---|---|
网站的总访问次数 | 显示网站总访问量。 |
网站的独立访客数 | 统计访问网站的不同 IP 地址数量。 |
总数据传输量 | 表示网站传输数据总量,单位通常为 MB 或 GB。 |
网站的访问者信息:
维度 | 描述 |
---|---|
IP 地址的排名 | 列出访问网站的 IP 地址及其访问次数,可以了解访问者的地理位置分布。 |
访问者的浏览器和操作系统 | 统计访问者使用的浏览器和操作系统类型,有助于优化网站兼容性。 |
请求信息:
维度 | 描述 |
---|---|
请求方法 | 显示不同 HTTP 请求方法的请求次数。 |
请求的状态码 | 统计不同 HTTP 状态码请求次数,如 200 表示成功,404 表示未找到。 |
请求 URL 的排名 | 列出被访问最多 URL 地址,可发现网站的热门内容。 |
性能分析:
维度 | 描述 |
---|---|
请求时间分布 | 显示不同时间段请求量,可发现访问高峰期。 |
最耗时的请求 | 列出响应时间最长请求,有助于发现性能的瓶颈。 |
高级用法
除了基本分析功能,GoAccess 还支持一些高级用法。例如可使用管道和过滤器来处理日志数据,下面命令将实时地分析 Nginx 的访问日志,并显示最新的统计信息:
1 | tail -f /var/log/nginx/access.log | goaccess -p /etc/goaccess/goaccess.conf |
GoAccess 可支持同时分析多个日志文件,下面命令将合并多个日志文件的分析结果:
1 | goaccess -p /etc/goaccess/goaccess.conf access.log.1 access.log.2 |
条评论