搭建开源GoAccess工具进行可视化Web日志分析

原创 小新  2021-03-24 16:24:16  阅读 1043 次 评论 0 条

一、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

本文地址:https://mxlog.com/fenxiang/1548.html
版权声明:本文为原创文章,版权归 小新 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?