0°

使用GoAccess分析Nginx日志

GoAccess是一款开源的且具有交互视图界面的实时Web日志分析工具,通过你的Web浏览器或者*nix系统下的终端程序(terminal)即可访问。能为系统管理员提供快速且有价值的HTTP统计,并以在线可视化服务器的方式呈现。

安装依赖软件包

$ yum install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel

安装GoAccess

$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz
$ tar -zxvf goaccess-1.2.tar.gz
$ cd goaccess-1.2
$ ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy --with-openssl
$ make && make install

配置

$ vi /usr/local/goaccess/etc/goaccess.conf

修改主要配置

time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
addr 0.0.0.0
port 7890
geoip-database /usr/local/goaccess/GeoIP/GeoLiteCity.dat

其中,log-format 与 access.log 的 log_format 格式对应,每个参数以空格或者制表符分割。参数说明如下:

%t 匹配time-format格式的时间字段
%d 匹配date-format格式的日期字段
%h host(客户端ip地址,包括ipv4和ipv6)
%r 来自客户端的请求行
%m 请求的方法
%U URL路径
%H 请求协议
%s 服务器响应的状态码
%b 服务器返回的内容大小
%R HTTP请求头的referer字段
%u 用户代理的HTTP请求报头
%D 请求所花费的时间,单位微秒
%T 请求所花费的时间,单位秒
%^ 忽略这一字段

下载地图数据包

$ mkdir /usr/local/goaccess/GeoIP
$ cd /usr/local/goaccess/GeoIP
$ wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gunzip GeoLiteCity.dat.gz
$ wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
$ gunzip GeoLiteCityv6.dat.gz
$ wget -N http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
$ gunzip GeoIPv6.dat.gz

命令

查看 GoAccess 命令参数,如下:

$ goaccess -h
# 常用参数
-a --agent-list 启用由主机用户代理的列表。为了更快的解析,不启用该项
-d --with-output-resolver 在HTML/JSON输出中开启IP解析,会使用GeoIP来进行IP解析
-f --log-file 需要分析的日志文件路径
-p --config-file 配置文件路径
-o --output 输出格式,支持html、json、csv
-m --with-mouse 控制面板支持鼠标点击
-q --no-query-string 忽略请求的参数部分
--real-time-html 实时生成HTML报告
--daemonize 守护进程模式,--real-time-html时使用

控制台模式

$ goaccess -a -d -f /www/wwwlogs/access.log -p /usr/local/goaccess/etc/goaccess.conf
使用GoAccess分析Nginx日志

控制台下的操作方法:

F1  主帮助页面
F5  重绘主窗口
q  退出
1-15 跳转到对应编号的模块位置 
o  打开当前模块的详细视图
j  当前模块向下滚动
k  当前模块向上滚动
s  对模块排序
/  在所有模块中搜索匹配
n  查找下一个出现的位置
g  移动到第一个模块顶部
G  移动到最后一个模块底部

HTML模式

$ goaccess -a -d -f /www/wwwlogs/access.log -p /usr/local/goaccess/etc/goaccess.conf -o /www/wwwroot/public/go-access.html
使用GoAccess分析Nginx日志

daemonize

GoAccess已经为我们考虑到这点了,它可以以daemonize模式运行,并提供创建实时HTML的功能,只需要在启动命令后追加–real-time-html –daemonize参数即可。

$ goaccess -a -d -f /www/wwwlogs/access.log -p /usr/local/goaccess/etc/goaccess.conf -o /www/wwwroot/public/go-access.html --real-time-html --daemonize
# 监听端口7890
$ netstat -tunpl | grep "goaccess"
tcp  0  0 0.0.0.0:7890   0.0.0.0:*   LISTEN   21136/goaccess

由于我的站点启用了 HTTPS,所以 GoAccess 也需要使用 openssl,在配置文件goaccess.conf中配置ssl-cert和ssl-key项,并确保在安装过程中 configure 时已添加–with-openssl项来支持 openssl 。当使用 HTTPS 后 Websocket 通信时也应该使用 wss 协议,需要将ws-url项配置为wss://www.domain.com。

crontab

在某些场景下,没有这样的实时性要求,可采用crontab机制实现定时更新HTML报表。

# 每天执行
0 0 1 * * goaccess -a -d -f /www/wwwlogs/access.log -p /usr/local/goaccess/etc/goaccess.conf -o /www/wwwroot/public/go-access.html 2> /www/wwwlogs/go-access.log

官方文档:https://goaccess.io/man

原文地址:https://www.fanhaobai.com/2017/06/go-access.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论