使用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 相关文章推荐
Apache压力测试工具的安装使用
Mar 31 Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
Apache POI的基本使用详解
Nov 07 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
zabbix配置nginx监控的实现
May 25 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
Zabbix对Kafka topic积压数据监控的解决方案
Jul 07 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
Windows server 2016服务器基本设置
Aug 14 Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
Nginx反向代理配置的全过程记录
制作能在nginx和IIS中使用的ssl证书
解析在浏览器地址栏输入一个URL后发生了什么
Linux中Nginx的防盗链和优化的实现代码
You might like
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
chrome调试javascript详解
2015/10/21 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
javascript self对象使用详解
2016/10/18 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
Python读写Excel文件的实例
2013/11/01 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python统计中文字符数量的两种方法
2019/01/31 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
有关打架的检讨书
2014/01/25 职场文书
疾病防治方案
2014/05/31 职场文书
功夫熊猫观后感
2015/06/10 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
如何在Python中创建二叉树
2021/03/30 Python
MySQL慢查询优化解决问题
2022/03/17 MySQL