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/

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
3月前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
162 0
|
8月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
578 117
|
9月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
694 90
|
5月前
|
监控 安全 NoSQL
【DevOps】Logstash详解:高效日志管理与分析工具
Logstash是ELK Stack核心组件之一,具备强大的日志收集、处理与转发能力。它支持多种数据来源,提供灵活的过滤、转换机制,并可通过插件扩展功能,广泛应用于系统日志分析、性能优化及安全合规等领域,是现代日志管理的关键工具。
802 0
|
7月前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
924 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
6月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
9月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
388 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
9月前
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
192 1
|
11月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
588 7
MySQL事务日志-Undo Log工作原理分析