goaccess 分析nginx log

简介: 统计AP 使用峰值。客户端访问AP 是通过Nginx 代理实现的。因此可以从Nginx的log着手分析,配合管道命令可以定向分析某些具体请求或者某段时间的nginx log,因此通过goaccess 来分析Nginx可满足需求。

一、需求背景

统计AP 使用峰值。客户端访问AP 是通过Nginx 代理实现的。因此可以从Nginx的log着手分析,配合管道命令可以定向分析某些具体请求或者某段时间的nginx log,因此通过goaccess 来分析Nginx可满足需求。

二、安装

安装goaccess之前唯一需要依赖的包是ncurses。

1、tar xvf goaccess-1.2.tar.gz -C /usr/local
这里请注意,将解压文件压在/use/local 的原因是
有的依赖库会找不到而报错
例如
: Failed dependencies:  GeoIP = 1.6.5-1.el6 is needed by GeoIP-devel-1.6.5-1
这个浪费了我快3个小时,从github上把geoip的项目clone下来也没有解决,最后是使用-C 参数将/usr/local下。
2、cd goaccess-1.2/
3、 ./configure --enable-utf8 --enable-geoip=legacy
4、 make
5、 make install

3 4 5步骤分别是什么意思呢?

第一步:./configure
首先检查机器的一些配置和环境,系统的相关依赖。如果缺少相关依赖,脚本会停止执行,软件安装失败
根据之前检查环境和依赖的结果,生产Makefile文件(main job)
第二步:make
make是Unix系统下的一个包。执行make命令需Makefile文件。make会根据Makefile文件中指令来安装软件
Makefile文件中有许多标签,来表示不同的section。一般的,make会编译源代码并生成可执行文件,其实Makefile主要就是描述文件编译的相互依赖关系
第三步:make install
当执行make命令不加任何参数,程序就会按照Makefile的指令在相应的section间跳转并且执行相应的命令
加上install参数即执行make install时,程序只会执行install section处的命令。install section的指令会将make阶段生产的可执行文件拷贝到相应的地方,例如/usr/local/bin
make clean 会删除上次make生产的obj文件以及可执行文件

三、分析静态

具体其他参数详见 这里

goaccess -a -d -f /usr/local/nginx/logs/access-2020-05-18_151.log -p ./config/goaccess.conf >/tmp/out.html 

四、动态分析

关键参数 :--real-time-html  实时通过websocket 协议将分析结果推送给客户端。

#!/bin/bash
#desc: generate html with goaccess based on nginx log 
#author :ninesun
#parp: null
cd  /usr/local/goaccess-1.2/
LANG="zh_CN.UTF-8"
goaccess /usr/local/nginx/logs/access.log -o /opt/goaccess/html/out.html  --time-format='%H:%M:%S'  --date-format='%d/%b/%Y' --log-format=COMBINED --real-time-html

执行该脚本后,会提示

goaccess]# ps -ef|grep goacc
root      8757  8755  7 11:23 pts/1    00:00:08 goaccess /usr/local/nginx/logs/access.log -o /opt/goaccess/html/out.html --time-format=%H:%M:%S --date-format=%d/%b/%Y --log-format=COMBINED --real-time-html

WebSocket server ready to accept new client connections


服务端目前已经ok了,现在在nginx中配置客户端请求路径。使用nginx代理websocket 请求。

#ninesun add 2020年5月20日17:04:31
    location /out.html {                                                                                                                           
            alias /opt/goaccess/html/out.html;
      auth_basic "请输入用户名和密码!"; #这里是验证时的提示信息
      auth_basic_user_file /opt/goaccess/html/out_passwd; #这是你生成密码存放的文件
      proxy_http_version 1.1; # 这三行是为了实现websocket
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";    
        }

为了安全性,使用 htpasswd 生成秘钥。

htpasswd -c /opt/goaccess/html/out_passwd test

设置好密码后登陆即可以实时查看了。

在这里我一直有一个疑问,websocket 如何和客户端交互?

socket 是实时将数据发送给客户端的。

参考 :

https://www.ctolib.com/goaccess.html

https://goaccess.io/man#examples

https://www.robberphex.com/why-is-connection-upgrade-necessary/

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
23天前
|
运维 监控 应用服务中间件
LNMP详解(十五)——Nginx日志分析实战
LNMP详解(十五)——Nginx日志分析实战
24 0
|
24天前
|
运维 应用服务中间件 Shell
LNMP详解(十六)——Nginx日志切割
LNMP详解(十六)——Nginx日志切割
22 5
|
27天前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
2月前
|
存储 JSON 应用服务中间件
Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
【2月更文挑战第30天】Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
21 2
|
2天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
15 0
|
4天前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
9天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
78 11
|
14天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
18 0
|
15天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
42 0
|
23天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
40 2