Tsin's Blog

Always remember, never accept the world as it appears to be, dare to see, for it could be. 永远记住,不要只满足于事物的表象,要敢于探寻,未知的可能

Goaccess – Nginx日志分析/图表生成工具

GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,可分析Apache/Nginx等WEB日志,同时还支持生成HTML、JSON、CSV等数据报告。GoAccess既可以在终端中展示结果,也可以生成 HTML 报表在浏览器中查看,且生成的报表足够酷炫,这也是我为什么一直在折腾,想要实现的原因。我花了几天时间,查阅了大量的资料,终于实现了在浏览器中查看HTML报表

先看一下最终效果:mytsin.com/analysis.html

准备工作

系统:CentOS 6.10

web服务:Nginx

面板:宝塔面板

日志文件:access.log

工具:Goaccess-1.2

中文网站:goaccess.cc

官方网站:goaccess.io

  • 安装前请先备份好相关数据(例如网站数据库等)
  • 确定日志文件的所在目录
  • 以下日志文件、网站目录,根据自己的实际情况进行修改
  • 演示的日志文件及目录为 /home/wwwlogs/access.log
  • 演示的网站目录为 /www/wwwroot/mytsin.com/

安装Goaccess

虽然可以通过apt-getyum+epel进行安装但是版本有点低功能上有些差异,但建议下载源码进行编译安装

首先安装依赖包:

CentOS/Fedora/RHEL:yum install ncurses-devel geoip-devel
Ubuntu/Debian:apt-get install libncursesw5-dev libgeoip-dev

#安装依赖
yum -y install libmaxminddb-devel #下载源码
wget https://tar.goaccess.io/goaccess-1.2.tar.gz
#解压
tar -xzvf goaccess-1.2.tar.gz
#进入目录
cd goaccess-1.2/
#编译安装
./configure –enable-utf8 –enable-geoip=mmdb –with-openssl –with-libmaxminddb-devel
make && make install

如有需要,也可以安装GeoIP

  1. cd /usr/local/src
  2. wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
  3. wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  4. tar xzvf GeoIP-1.4.6.tar.gz
  5. cd GeoIP-1.4.6
  6. ./configure && make && make install
  7. cd ..
  8. mv GeoIP.dat.gz /usr/local/share/GeoIP/

使用方法

1、终端下查看

分析日志:goaccess -f /home/wwwlogs/access.log –log-format=COMBINED

常用参数说明:

-f 指定要分析的日志/path/to/log
–log-format 日志的格式,LNMP默认格式为:COMBINED
-a 在Host模块是否启用点开IP显示user-agents

终端下效果如下图:

操作快捷键

q 退出当前小窗口、模块视图或退出goaccess
o 打开当前激活模块的详细视图,当前激活模块会以黄色显示
0-9 数字0-9可以控制切换各个模块
c 改变当前配色
/ 搜索
F1 帮助
F5 窗口重新绘图

2、生成图表网页

goaccess -f /home/wwwlogs/access.log –log-format=COMBINED -a > www/wwwroot/mytsin.com/analysis.html

  • access.log:日志文件路径(请填写绝对路径)
  • /mytsin.com/:为您站点根目录,根据自身情况修改

运行后,就自动生成一个酷炫的网页图表,可以直接在浏览器里打开查看

定时生成HTML报告到站点目录

每次都手动去生成报告太麻烦啦,有没有更简便的方法?写个简单的shell脚本自动生成就搞定啦~

假设文件要放在/root/目录下

  1. cd /root
  2. vim goaccess.sh

将下面的内容另存为goaccess.sh

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

export PATH

goaccess /home/wwwlogs/access.log -a -o www/wwwroot/mytsin.com/analysis.html –log-format=COMBINED

注: “–log-format=COMBINED” (log前有两个’-‘)

  • /access.log:日志文件路径(请自行替换,填写绝对路径)
  • /mytsin.com/:为您站点根目录,根据自身情况修改

别忘记加上可执行权限:chmod u+x goaccess.sh,再使用crontab每小时生成一次HTML报告

  1. #添加计划任务
  2. crontab -e
  3. #添加以下内容,/root/goaccess.sh为上面脚本的绝对路径
  4. */15 * * * * /root/goaccess.sh > /dev/null
  5. #重新加载cron配置和重启cron服务
  6. service crond reload
  7. service crond restart

大功告成,这样Goaccess每隔15分钟就会为我们生成一次HTML日志报告,访问网站(https://mytsin.com/analysis.html)就可以看到直观的HTML报告啦

 

参考资料:

Nginx日志分析/图表生成工具 – goaccess

CentOS安装GoAccess快速方便的分析网站日志