一、GoAccess简单介绍

1、简介
GoAccess旨在成为一个基于终端的快速日志分析器,其核心思想是实时快速分析和查看Web服务器统计信息,GoAccess可分析Apache/Nginx等WEB日志,
同时还支持生成HTML、JSON、CSV等数据报告。
2、特点:
所有面板和指标都定时在终端输出上每200毫秒更新一次,在HTML输出上每秒更新一次。
GoAccess允许任何自定义日志格式字符串。预定义选项包括Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等
跟踪提供请求所需的时间。如果您想跟踪减慢网站速度的网页,则非常有用。
数据持久性强,GoAccess能够通过磁盘上的B + Tree数据库逐步处理日志。
GoAccess是用C语言编写的,要运行它,你只需要将ncurses作为依赖项,它甚至还具有自己的RFC6455兼容Web Socket服务器。
您可以针对访问日志文件运行它,选择日志格式并让GoAccess解析访问日志并显示统计信息。
按小时或日期确定最慢运行请求的匹配数,访问者数,带宽数和指标数。
多个虚拟主机,一个面板,显示哪个虚拟主机正在消耗大部分Web服务器资源。
定制GoAccess以适合您自己的色彩品味。通过终端,或者只是更新HTML输出上的样式表。

二、安装

goaccess安装很简单,可以yum直接安装,不过版本较低,也可以编译安装,可以使用较高版本,目前是V1.3版本。安装以及介绍可以参考官网:
这里就不介绍安装配置方法了,网上有很多文档,比如:  这里主要介绍中文界面配置
系统和版本说明:
系统:Centos 6.x
版本:GoAccess v1.3

三、如何让goaccess的dashboard界面显示中文

goaccess配置好之后,将生成的xxx.html文件当做nginx或者其他web的访问页面,就可以直接在浏览器中查看到日志的分析情况,比如请求的文件,访客的主机名和ip
地址,状态码等信息,但是是英文显示的,对一些非技术人员来说,可能看起来不那么只管,所以可以将其配置为中文显示,步骤如下:
1、修改goaccess所在服务器的系统语言为中文
#cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
为了让其立刻生效,在shell界面执行
#LANG="zh_CN.UTF-8"
2、测试将log转换成html,查看dashboard界面是否显示为中文
#goaccess -p /tmp/goaccess.conf access.log -o /www/html/go.html
一般情况下,执行之后,就可以看到可以显示中文了,如下图:

GoAccess中文界面显示配置_中文界面

3、goaccess实时分析展示log
不管是官网还是网上个人博客,都说是使用--real-time-html 参数来实现实时展示log,但是我试了多次都无法实现,如下命令:
#goaccess -p /tmp/goaccess.conf access.log -o /www/html/go.html --real-time-html &
会在后台运行,如果在goaccess.conf配置了addr x.x.x.x 也可以看到监听了默认的7890端口,但是我遇到的情况是access.log一直在更新,dashboard界面分析的内
容还是不会自己更新,不知道是什么问题,也请配置成功实时日志展示的朋友们多多留言告知我方法,感谢。

因为对日志实时性要求不是非常高,于是我就配置了crontab,让其每隔一段时间转换一次,也可以实现伪实时性观察log,如下:
0 * * * * /usr/local/bin/goaccess -p /tmp/goaccess.conf /var/log/nginx/access.log -o /www/html/go.html

但是遇到一个问题,发现在shell命令行执行goaccess 命令可以正常的中文显示,配置到crontab之后,无法显示中文了,后来发现是环境变量的问题,于是将crontab
中的内容修改成了一个小的shll脚本,如下:
#cat /root/goaccess.sh
#!/bin/bash
LANG="zh_CN.UTF-8"
/usr/local/bin/goaccess -p /tmp/goaccess.conf /var/log/nginx/access.log -o /www/html/go.html
然后再将脚本加入到crontab即可
#crontab -l
0 * * * * /bin/bash /root/goaccess.sh

4、有些朋友估计不想修改系统默认语言,就喜欢使用默认的英文,那么goaccess可以配置dashboard显示中文吗?答案是:可以。
命令行界面:
#LANG="zh_CN.UTF-8" bash -c "goaccess -p /tmp/goaccess.conf /var/log/nginx/access.log -o /www/html/go.html --log-format=COMBINED"
或者直接写一个小脚本即可,如下:
#cat /root/goaccess.sh
#!/bin/bash

LANG="zh_CN.UTF-8" bash -c "goaccess -p /tmp/goaccess.conf /var/log/nginx/access.log -o /www/html/go.html --log-format=COMBINED"

以上就是我个人配置的过程,有不足之处,请多多指出!
参考链接:https://github.com/allinurl/goaccess/issues/1043