nginx日志分析工具:GoAccess

官方地址: https://goaccess.io

简介

GoAccess 被设计成快速的并基于终端的日志分析工具。其核心理念是不需要通过 Web 浏览器就能快速分析并实时查看 Web 服务器的统计数据(这对于需要使用 SSH 来对访问日志进行快速分析或者就是喜欢在终端环境下工作的人来说是超赞的)。

终端输出仅仅是默认的输出方式,GoAccess 还支持生成完整的实时 HTML 报告(这对分析、监控以及数据可视化都是极好的),以及 JSON 和 CSV 格式的报告。

一、安装goaccess

1、安装依赖库
1
yum install -y GeoIP-devel ncurses-devel
2、下载并安装GoAccess
1
2
3
4
5
wget https://tar.goaccess.io/goaccess-1.4.5.tar.gz
tar -xzvf goaccess-1.4.5.tar.gz
cd goaccess-1.4.5/
./configure --enable-utf8 --enable-geoip=legacy
make && make install

注:如果你觉得麻烦,也可通过yum进行安装

1
yum install goaccess
3、配置日志格式

配置文件位于:/usr/local/etc/goaccess/goaccess.conf

1
2
3
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^]; "%r" %s %b "%R" - %^"%u" - %^ %T
4、使用终端分析日志结果
1
goaccess -a -d -f /var/log/nginx/access.log

二、使用定时器以HTML格式输出分析结果

1、编写脚本文件
1
2
3
4
5
6
#分析报告存放路径
mkdir -p /data/www/goaccess/html
#分析脚本存放路径
mkdir -p /usr/local/goaccess/scripts
#获取HTML分析报告
vim /usr/local/goaccess/scripts/getHtmlReport-项目名称.sh
  • getHtmlReport-项目名称.sh内容如下:
    1
    2
    3
    4
    5
    #!/bin/bash
    #页面转换为中文
    LANG="zh_CN.UTF-8"
    #输出HTML分析报告
    goaccess -a -d -f /var/log/nginx/access.log -o /data/www/goaccess/html/report-项目名称.html
2、分配脚本可执行权限:
1
chmod 755 /usr/local/goaccess/scripts/getHtmlReport-项目名称.sh
3、添加定时任务
1
2
3
4
5
#新增定时任务
crontab -e

#定时生成项目的nginx日志分析html报告
0 0 * * * /bin/bash /usr/local/goaccess/scripts/getHtmlReport-项目名称.sh
4、配置nginx访问路径
1
2
3
4
#用alias将它重定向到所指定的html中
location /report-项目名称.html {
alias /data/www/goaccess/html/report-项目名称.html;
}

三、nginx访问权限设置

nginx配置访问密码,让用户输入用户名密码才能访问(basicAuth)

注:如果你是在内网进行使用,或者不考虑访问控制的问题,可以不进行 nginx 访问权限的设置

1、安装htpassed工具
1
yum -y install httpd-tools
2、设置用户名和密码,并把用户名、密码保存到指定文件中:
1
2
3
htpasswd -c [passwfile] [username]

#例:htpasswd -c /etc/nginx/passwd you
注意:/etc/nginx/passwd 是生成密码后的文件保存路径(passwdfile),codeauth是用户名(username)

验证方法:查看最后生成的密码文件/etc/nginx/passwd的内容,分号后的内容就是加密过的密码。

3、修改nginx配置文件
1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 443 ssl;
......

location /report-armstrong.html {
#新增下面两行
auth_basic "Please input password"; #这里是验证时的提示信息
auth_basic_user_file /etc/nginx/passwd;

alias /data/www/goaccess/html/report-armstrong.html;
}
}
4、重启nginx并访问

重启nginx,在浏览器中访问/report-armstrong.html,输入用户名和密码查看对应数据

------ 本文结束------