阅读本文你需要了解(pre-knowledge)

  1. 基本的terminal命令
  2. http协议的基础知识

简介

GoAccess是一个开源的实时web访问日志分析工具,实现了基于终端或浏览器的数据可视化,并且提供了有用的统计数据。

安装

centos

$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz
$ tar xvzf goaccess-1.2.tar.gz
$ cd goaccess-1.2/
# 安装依赖
$ yum install ncurses-devel gcc
$ yum install geoip-devel tokyocabinet-devel
$ ./configure --enable-utf8 --enable-geoip=legacy
# 编译
$ make && make install
$ ln -s /usr/local/bin/goaccess /usr/bin/goaccess

使用

goaccess预设了对以下日志格式的支持:

  • NCSA Combined Log Format
  • NCSA Combined Log Format with Virtual Host
  • Common Log Format (CLF)
  • Common Log Format (CLF) with Virtual Host
  • W3C
  • Squid Native Format

使用控制台

goaccess的参数说明文档

# 打开goaccess的控制台,选择一种预设的日志格式,或者输入自定义的日志格式.
$ goaccess -f pathOfYourAccessLog.log

几种常用的日志格式如下:

caddy

当然goaccess也支持自定义日志格式,我是用caddy作反向代理的,日志格式如下:

140.205.201.37 - - [17/May/2017:03:06:25 +0000] "GET /admin/images/menu-current-arrow.gif HTTP/1.1" 200 117

这个时候需要自定义日志格式(logFormat),其中格式的详细说明参考文档

$ goaccess --time-format=%H:%M:%S --log-format='%h %^[%d:%t %^] "%r" %s %b' --date-format=%d/%b/%Y -f pathOfYourAccessLog.log

nginx

# 日志格式如下
122.233.205.143 - - [15/May/2017:09:32:53 +0000] "GET /favicon.ico HTTP/1.1" 502 575 "https://narro.me/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
$ goaccess --time-format=%H:%M:%S --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"' --date-format=%d/%b/%Y -f pathOfYourAccessLog.log

traefik

203.208.60.240 - - [25/Feb/2018:08:56:54 +0000] "GET /narro/narro_blog/src/bca1842cfb22b2f910e811923356e2031f680536/categories/index.html HTTP/1.1" 200 30839 - "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 15863 "gogs" "http://gogs:3000" 56ms
$ goaccess --time-format=%H:%M:%S --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ "%v" %^ %T' --date-format=%d/%b/%Y -f pathOfYourAccessLog.log