使用goaccess分析nginx日志的详细方法


Posted in Servers onJuly 09, 2021

最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义下格式;但是网上虽然介绍goaccess的很多,但是大多都是就重避轻,将格式的自定义忽略掉,因此我就来把自定义这块说下。

GoAccess是一款开源、实时,运行在命令行终端下的web日志分析工具。该工具提供快速、多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据,和繁杂的指令以及一大堆管道/正则表达式说byebye。

分析nginx日志

GoAccess的多种展示方式
goaccess有多种数据可视化的方式,分别为:

命令行输出格式化数据
利用access.log生成静态的可视化数据
生成实时可视化数据
注意,如果是编译安装且选择了 ?enable-geoip=mmdb的话需要编辑配置文件,并在使用命令的时候带上参数 ?config-file=/usr/local/etc/goaccess/goaccess.conf,如果是用包管理器安装的话则不需要

命令行输出GoAccess
goaccess /var/log/nginx/access.log -c,会先询问你数据的格式,我这里的日志使用的是第一种。

解析accesslog生成静态html
GoAccess还可以解析access.log生成静态html,以更加直观的方式来展示数据。

goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED,之后再使用浏览器访问report.html即可查看报告,各种数据一应俱全。

实时解析访问日志
GoAccess除了可以生成静态的html文件,还可以生成实时网站访问数据!

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf

添加中文支持
Goaccess 1.3之后的版本提供了多语言支持,先在命令行中执行 apt install language-pack-zh-hans 安装中文包,再使用export LANG=zh_CN.UTF-8修改环境变量,再次使用 goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf启动GoAccess可以发现已经是中文界面了。

关于实时模式,可以查看官网的demo https://rt.goaccess.io/?20200209201008

异常退出
如果实时模式没有正常退出,可能无法再次正常启动,GoAccess默认使用7890 websocket端口,所以使用lsof -i:7890查看占用该端口的进程号并kill即可。

ssl支持
如果需要在加密连接上输出实时数据,则需要使用 --ssl-cert= 和 --ssl-key=,我在设置之后访问report.html发现数据依旧是静态的,突然想起我用了cloudflare cdn,而7890端口并不在cloudflare的支持端口列表里面,所以我使用参数 --ws-url=wss://服务器域名(我们的浏览器会尝试与该域名的8443端口见了ws连接):8443 --port=8443 把端口改成了8443。令人没想到的是,此时的report.html使用代理链接的时候是可以连接的,并可以查看实时信息,而直接连接的时候依旧是静态数据,tcping一看。

去cloudflare的官网可以发现如下内容

只有端口 80 和 443 可兼容以下服务:

对于启用了中国网络的域名的中国境内数据中心 HTTP/HTTPS 流量,
也就是说,国内是没办法通过cloudflare连接非80/443端口的…

反向代理
但是也不是没有办法连接,最后我想到了反向代理的方案。

将启动参数改为--ws-url=wss://你的域名.com/goaccess --port=7890

修改nginx站点配置文件 /etc/nginx/site-available/default,添加下面内容

location /goaccess {
    proxy_redirect off;
    proxy_pass https://127.0.0.1:7890;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
}

注意,如果你的站点配置文件里面开启了url重写,为了避免 /goaccess 受到影响,我们需要把该路径排除重写。

把重写规则都放到location / 里面去

location / { 
    if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
    rewrite (.*) /index.php;
    }
}

下面什么都不需要做

location /goaccess/ {
}

之后重启nginx,再访问report.html,发现左边齿轮处终于显示connect了。

如果你只是自己看或者不在意ip暴露,其实直接使用ip直接连接不走cdn就没那么麻烦了。

到此这篇关于使用 goaccess 分析nginx 日志的文章就介绍到这了,更多相关 goaccess 分析nginx 日志内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
Nginx解决前端访问资源跨域问题的方法详解
Mar 31 Servers
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
使用Nginx搭载rtmp直播服务器的方法
Oct 16 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
nginx共享内存的机制详解
Mar 21 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
Windows Server 2008配置防火墙策略详解
Jun 28 Servers
Nginx配置使用详解
Jul 07 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
Nginx反向代理配置的全过程记录
制作能在nginx和IIS中使用的ssl证书
解析在浏览器地址栏输入一个URL后发生了什么
Linux中Nginx的防盗链和优化的实现代码
You might like
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python动态参数用法实例分析
2015/05/25 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python hook监听事件详解
2018/10/25 Python
python实现可逆简单的加密算法
2019/03/22 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
python如何随机生成高强度密码
2020/08/19 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
英国电器零售商:PRC Direct
2018/06/21 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
考试退步检讨书
2014/01/15 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
HTML中的表格元素介绍
2022/02/28 HTML / CSS
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫