Nginx日志分析工具-GoAccess使用详解

GoAccess简介

      GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,能够实时快速分析和查看Web服务器统计信息,可以对指定的 Web 日志文件进行解析,形成html或者json文件,更清晰直观的查看日志信息

功能简介:

  • 独立访客:按照日期展示了访问次数,独立访客数,以及累计消耗的带宽等指标
  • 请求的文件:展示服务器上被请求次数最多的文件
  • 访客主机名和IP:展示访问服务器的客户端主机名和IP地址
  • 时间分配:展示某个时间段内,有多少访问量
  • 虚拟主机:显示从访问日志中解析出来的不同的虚拟主机的情况
  • 定时刷新:日志解析信息可定时刷新
    ………
    具体信息可在GoAccess官网查看

实验目的: 本次是想通过goaccess工具对nginx的access.log文件进行解析,可以更直观的看出服务网站的日访问量

本次使用了两种安装方法:

  • 一、yum安装
  • 二、源码编译安装

其实安装难度都一样,很简单,只是yum安装的1.2版本不支持中文,源码安装的1.3版本可以支持中文

一、使用yum方式安装goaccess1.2

操作系统环境

[root@k8s-etcd-2 test]# uname -r
3.10.0-693.el7.x86_64

1.1、安装使用yum源

首先安装epel的yum源,否则系统中没有goaccess的包

[root@k8s-etcd-2 test]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
[root@k8s-etcd-2 test]# rpm -ivh epel-release-7-12.noarch.rpm
[root@k8s-etcd-2 test]# yum makecache		#建立数据缓存

1.2、安装依赖包

[root@k8s-etcd-2 test]# yum -y install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel gcc
[root@k8s-etcd-2 test]# yum -y install GeoIP-update	    #安装GeoIP-update地理位置数据库

1.3、安装goaccess

[root@k8s-etcd-2 test]# yum -y install goaccess
[root@k8s-etcd-2 test]# echo $?		     #查看安装命令是否执行成功,0为成功
0

1.4、调整goaccess配置

使用yum安装的goaccess,默认配置文件是在/etc/goaccess.conf

[root@k8s-etcd-2 test]# cat << EOF >> /etc/goaccess.conf
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"
EOF

1.5、调整nginx.conf配置

因为goaccess解析日志对log_format信息有要求,所以也需要调整nginx的配置

PS:也可以根据nginx中的自定义log_format格式去调整goaccess中的log_format,具体详细解释及使用方式请查看这篇文章

[root@k8s-etcd-2 test]# vim /opt/nginx/nginx.conf
log_format  main  '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
        '$status $body_bytes_sent "$http_referer" - $request_body'
        '"$http_user_agent" "$http_x_forwarded_for"';

(截取一张刚刚用yum安装的nginx配置,j见下图,以供参考!主要看log_format配置)

1.6、重启nginx

      这里需要注意 如果nginx之前已经在服务器上运行,并且之前已经有access访问日志,那么因为之前的日志文件是根据之前的log_format配置生成的,goaccess配置log_format不会识别,所以这次就需要先将以往的access.log删除或者重命名备份,然后等待重新生成的access.log文件。

[root@k8s-etcd-2 test]# cd /var/log/nginx/
[root@k8s-etcd-2 nginx]# mv access.log access.log_bak
[root@k8s-etcd-2 nginx]# systemctl restart nginx

3.2、访问测试nginx默认页面,生成access日志

1.7、使用goaccess进行日志解析

[root@k8s-etcd-2 nginx]# goaccess -a -c -d -f /var/log/nginx/access.log -p /etc/goaccess.conf > /home/test/test.html

goaccess使用参数详解

  • -a 开启 UserAgent 列表。开启后会降低解析速度
  • -c 在程序开始运行时显示 日志/日期 配置窗口
  • -d 输出 HTML 或者 JSON 报告时开启 IP 解析
  • -f 指定输入日志文件的路径
  • -p 指定使用自定义配置文件

其他参数请查看goaccess中文官方操作手册

1.8、配置访问方式

可以通过nginx的虚拟主机去访问,或者就干脆在Windows中用浏览器打开html文件就可以了

我这里简单配置一下nginx的虚拟主机去访问

[root@k8s-etcd-2 nginx]# vim /etc/nginx/nginx.conf
    server {
    
    
        listen     8080;
        server_name localhost;
            root    /home/test;
            index   test.html *.html;
        }
[root@k8s-etcd-2 nginx]# nginx -s reload

1.9、访问测试

访问我上边配置的地址 http://192.168.99.183:8080

如果可以访问到这个页面,恭喜简单使用成功!

ps:英文好的,可以看懂页面全部意思就此止步吧,哈哈,下边是给像我这种英文不好的人的解决办法

二、支持中文的goaccess1.3编译安装

因为我们刚刚安装的是1.2版本的goaccess,所以页面不支持中文语言
翻看了一下goaccess的英文版官网,才发现原来在1.3版本才开始支持中文

但是yum源内只有1.2版本的的,那就只能源码编译安装了。
如果没有特殊需求,那就按官网的操作步骤来就ok
不过如果是直接从本步骤开始看起,没有安装上边的依赖文件,那就仍然需要安装一下

[root@k8s-etcd-2 test]# yum -y install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel gcc
[root@k8s-etcd-2 test]# yum -y install GeoIP-update	#安装GeoIP-update地理位置数据库

接下来就是正式的官方编译安装步骤

$ wget https://tar.goaccess.io/goaccess-1.3.tar.gz
$ tar -xzvf goaccess-1.3.tar.gz
$ cd goaccess-1.3/
$ ./configure --enable-utf8 --enable-geoip=legacy
$ make
$ make install

我这里也就按照官方给的安装步骤来的,也没必要自定义安装位置等等

默认配置文件:/usr/local/etc/goaccess/goaccess.conf
默认可执行文件:/usr/local/bin/goaccess

之后的测试步骤就和yum安装之后的步骤一样了
可以从【1.4、调整goaccess配置】步骤开始看起,这里就不重复多说

配置完成后解析日志

[root@k8s-etcd-2 nginx]# /usr/local/bin/goaccess -a -c -d -f /var/log/nginx/access.log -p /usr/local/etc/goaccess/goaccess.conf > /usr/share/nginx/test/test.html

访问测试

这样就是中文了!!!

如果仍然不是中文的话,可以尝试以下两种方法
1.暂时调整系统语言为中文 临时修改,重启服务器之后丢失设置

[root@k8s-etcd-2 test]# LANG="zh_CN.UTF-8"    		#修改为中文 
然后再执行goaccess解析日志命令

2.永久调整为系统语言为中文(这种不太建议,以防出现其他问题)

[root@k8s-etcd-2 test]# vim /etc/locale.conf
LANG=zh_CN.UTF-8

猜你喜欢

转载自blog.csdn.net/weixin_43860781/article/details/104653807