使用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动态转换图片大小生成缩略图
Mar 31 Servers
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 Servers
详解nginx location指令
Jan 18 Servers
Z-Order加速Hudi大规模数据集方案分析
Mar 31 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
超越Nginx的Web服务器caddy优雅用法
Jun 21 Servers
git stash(储藏)的用法总结
Jun 25 Servers
Docker安装MySql8并远程访问的实现
Jul 07 Servers
修改Nginx配置返回指定content-type的方法
Sep 23 Servers
解决ubuntu安装软件时,status-code=409报错的问题
Dec 24 Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
Nginx反向代理配置的全过程记录
制作能在nginx和IIS中使用的ssl证书
解析在浏览器地址栏输入一个URL后发生了什么
Linux中Nginx的防盗链和优化的实现代码
You might like
PHP开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
window.opener用法和用途实例介绍
2013/08/19 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
flask开启多线程的具体方法
2020/08/02 Python
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
预备党员转正意见
2015/06/01 职场文书
遗失证明范文
2015/06/19 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书