一、GoAccess简介
GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,其核心思想是实时快速分析和查看Web服务器统计信息,GoAccess可分析Apache/Nginx等WEB日志,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问,旨在成为一个基于终端的快速日志分析器,同时还支持生成HTML、JSON、CSV等数据报告。能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。
二、GoAccess特点
所有面板和指标都定时在终端输出上每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安装
GoAccess安装很简单,可以通过Linux的yum,Debian/Ubuntu的apt-get,FreeBS的pkg等方式进行安装,不过,不推荐这样的方式,因为版本不是最新的,推荐使用源码编译安装方式,因为可以使用高版本。目前是V1.4版本,官方下载网址:https://goaccess.io/download
$ wget https://tar.goaccess.io/goaccess-1.4.6.tar.gz $ tar -xzvf goaccess-1.4.6.tar.gz $ cd goaccess-1.4.6/ $ ./configure --enable-utf8 --enable-geoip=mmdb $ make # make install
--enable-utf8
宽字符支持。依赖 Ncursesw 模块。
--enable-geoip=<legacy|mmdb>
地理位置支持。依赖 MaxMind GeoIP 模块。legacy 将使用原始 GeoIP 数据库。mmdb 将使用增强版 GeoIP2 数据库。
如果在执行./configure时,遇到错误的问题:
configure: error: *** Missing development files for the GeoIP library 或者是这个错误 Missing development files for libmaxminddb library
原因: 未安装地理数据库导致的,这时要看--enable-geoip=<legacy|mmdb>这个参数用的是legacy还是mmdb了。
--enable-geoip=legacy解决方法:
$ wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz $ tar -xzvf GeoIP-1.6.11.tar.gz $ cd GeoIP-1.6.11 $ ./configure $ make #make instal
如果make出现./bin2c: error while loading shared libraries: libGeoIP.so.1: cannot open shared object file: No such file or directory错误,使用ln -s /usr/local/lib/libGeoIP.so* /lib64/
--enable-geoip=mmdb解决方法:
$yum -y install libmaxminddb
四、生成Web可视化日志
GoAccess支持分析多个日志文件,现在nginx的日志有服务器的朋友都会进行日志按每天进行切割成多份日志的。
#goaccess -a -d -f weblog_*.log --log-format=COMBINED -p /usr/local/etc/goaccess/goaccess.conf -o allreport.html --real-time-html
因为我的日志是nginx日志按天进行切割的,一天一个日志文件,所以我就进行用通适符进行 weblog_ 是日志前面固定的名称,* 号是后面日期的变量。GoAccess分析多个日志的方式有多几种,
allreport.html 生成的web文件,名字你可以随便起。当然,你可以将文件直接生成在网站目录下,到时就可以直接打开网址来查看了。
引用官方多日志说明,但是我还是觉得我使用的这个方法更方便些。
多日志文件
有多种方法可以实现让 GoAccess 同时解析多个日志文件。最简单的方法是直接将多个文件通过命令行传给 GoAccess:
# goaccess access.log access.log.1
甚至在正常读取文件的时候也可以同时通过管道解析文件:
# cat access.log.2 | goaccess access.log access.log.1 -
注意 添加到命令行末尾的破折号 - 是为了告诉 GoAccess 应该从管道中读取数据。
要更加灵活的使用 GoAccess,我们可以使用一系列的管道。例如,我们希望处理所有压缩过的日志文件 access.log.*.gz 并附加到当前日志文件中,则我们可以这样做:
# zcat access.log.*.gz | goaccess access.log -
注意: 在 Mac OS X 上, 请使用 gunzip -c 代替 zcat。
如果你要生成中文的界面,在执行命令时,先执行
LANG="zh_CN.UTF-8"
也可以进行修改系统的语言为中文,可以百度一下Linux系统语言修改方法。
五、定时生成日志的HTML文档
放在crontab中定时生成的话,默认是英文的,不会生成中文,所以需要用一个小脚本来处理,除非你的系统是中文,默认是中文的,因为GoAccess生成的语言是根据你系统语言来定的。下面的方法是引用51CTO博主xingliguang的脚本。也是文章后面最后一条链接。
#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
================
本地提供GoAccess1.4.6版本下载:点击我开始下载
================
参考链接:
GoAccess官方:https://goaccess.io/
GoAccess国内中文站:https://goaccess.io/ 【这个网站下载的版本并不是最新的,最新的可以到官方英文站下】
技术网站:
https://blog.csdn.net/liaowunonghen/article/details/104756227
https://blog.csdn.net/z736248591/article/details/105494066
https://blog.51cto.com/linuxg/2335007