Nginx日志分析统计工具--goaccess1.3

版权声明:使用中有任何问题,可以留言,能解答尽量解答。交流q群773718900 https://blog.csdn.net/liyyzz33/article/details/89945844

需求:及时得到线上用户nginx访问日志分析统计结果!
直接上效果图:
在这里插入图片描述
具体安装步骤如下:
1.安装依赖

yum install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel -y
wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz
tar -zvxf GeoIP-1.6.11.tar.gz 
cd GeoIP-1.6.11
./configure
make && make install

2.安装goaccess

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

3、校对nginx和goaccess日志格式
查看当前的nginx配置

cat /etc/nginx/nginx.conf

在这里插入图片描述
使用nginx2goaccess.sh脚本将nginx日志格式格式化为goaccess能识别的日志格式,nginx2goaccess.sh脚本内容在 https://blog.csdn.net/liyyzz33/article/details/89945080
 1)保存下来

2)使用如下方式获取日志格式:

sh nginx2goaccess.sh '<log_format>'         #log_format为你nginx.conf中配置的日志格式
    
 #如:
sh nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$http_host$request_uri" $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'

3)会得到的结果,在goaccess-1.3/config下面创建一个nginxlog.conf:

#- Generated goaccess config:
time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%v%U" %s %T %b "%R" "%u" "%^"

3、配置见证奇迹的时刻,生成统计页面。

./goaccess -f /data/logs/nginx/pc.access.log -p config/nginxlog.conf -o /data/nginx/report.html
#或生成中文的方法
LANG="zh_CN.UTF-8" bash -c "./goaccess -f /data/logs/nginx/pc.access.log -p config/nginxlog.conf -o /data/nginx/report.html"
#html可视化文件的实时更新方法

nohup ./goaccess -f access.log -p config/nginxlog.conf -o day-report.html --real-time-html --ws-url=report.xxx.com &

日志格式符号解释
%x 与时间格式和日期格式变量匹配的日期和时间字段。当给出时间戳而不是日期和时间在两个单独的变量中时使用。
%t 时间字段匹配时间格式变量。
%d 与日期格式变量匹配的日期字段。
%v 服务器名称根据规范名称设置(服务器块或虚拟主机)。
%e 这是HTTP身份验证确定的请求文档的人的用户标识。
%h host(客户端IP地址,IPv4或IPv6)
%r 来自客户端的请求行。这需要围绕请求的特定分隔符(单引号,双引号等)可解析。否则,使用特殊的格式说明符,如组合%m,%U,%q和%H解析各个字段。
注意:使用或者%r获得完整的请求OR %m,%U,%q并%H形成你的要求,不要同时使用。
%m 请求方法。
%U 请求的URL路径。
注意:如果查询字符串在%U,则无需使用%q。但是,如果URL路径不包含任何查询字符串,则可以使用%q并将查询字符串附加到请求中。
%q 查询字符串。
%H 请求协议。
%s 服务器发送回客户端的状态代码。
%b 返回给客户端的对象大小。
%R “Referer”HTTP请求标头。
%u 用户代理HTTP请求标头。
%D 服务请求所需的时间,以微秒为单位。
%T 服务请求所需的时间,以毫秒为单位,分辨率为毫秒。
%L 服务请求所用的时间,以毫秒为单位的十进制数。
%^ 忽略此字段。
%~向前移动日志字符串,直到找到非空格(!isspace)char。
~h X-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。

选项解释
   -f 指定nginx日志文件
   -p 指定日志格式文件
   -o 输出到指定html文件
   --real-time-html 实时刷新
   --ws-url 绑定一个域名

附:
配置nginx访问刚刚生成的report.html页面
vim /etc/nginx/conf.d/goaccess.conf

server{
	listen 8080;
	server_name localhost;

	location /report.html {
            alias /data/nginx/report.html;
        } 
}

重启nginx

在浏览器就 http://192.168.1.50:8080/report.html 可以浏览上上面的截图了。

猜你喜欢

转载自blog.csdn.net/liyyzz33/article/details/89945844