goaccess分析json格式日志

一.安装使用yum安装,yum install goaccess

二.主要介绍格式问题

1.nginx日志格式如下:

log_format main escape=json '{"time_local":"$time_local",'

'"remote_addr":"$remote_addr",'

'"referer":"$http_referer",'

'"request":"$request",'

'"status":"$status",'

'"bytes":"$body_bytes_sent",'

'"agent":"$http_user_agent",'

'"dm":"$request_body",'

'"up_resp_time":"$upstream_response_time",'

'"request_time":"$request_time"'

'}';

2.nginx输出日志内容:

{"time_local":"11/Jul/2024:10:56:30 +0800","remote_addr":"x.x.x.x","referer":"https://www.xxxxx","request":"GET /xxxx/xxx/xxxx HTTP/2.0","status":"200","bytes":"47","agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)","dm":"","up_resp_time":"","request_time":"0.000"}

3.goaccess配置如下:

goaccess -f access.log -o /data/java-program/webpage/record.html --real-time-html --log-format='"time_local":" %d:%t %^","%^":"%h","%^":"%R","%^":"%U","%^":"%s",%^,%^,%^,%^,"%^":"%T"' --time-format='%H:%M:%S' --date-format='%d/%b/%Y'

三.遇到的问题

1.时间格式问题

"time_local":" %d:%t %^"

注意中间这里有个空格,不加这个空格会报Token '[11/Jul/2024' doesn't match specifier '%d' ,

下面这种方法无法解决不识别问题,或者我没试出来。

LANG="en_US.UTF-8" bash -c 'goaccess access.log'

日志输出之后中间并没有这个空格,在解析日志的时候是出现了"双引号,去掉双引号之后依然无法识别,后偶然间加了空格,成功识别,希望踩坑经过可以帮助后来的人。

2.log-format格式问题

这个里面的格式要和输出的日志保持一致,里面空格也需要添加才能识别到,所以遇到空格多又不是特别重要的,可以使用%^跳过。

3.time-format,date-format

这两个必须要指定,不然会出现时间格式未设置的问题,参考命令设置。

相关推荐
计算机毕设定制辅导-无忧学长2 小时前
Nginx 性能优化技巧与实践(一)
nginx·性能优化·dubbo
烛.照1032 小时前
Nginx部署的前端项目刷新404问题
运维·前端·nginx
入眼皆含月9 小时前
Nginx的负载均衡
运维·nginx·负载均衡
烛.照10310 小时前
Nginx中部署多个前端项目
运维·前端·nginx
等一场春雨1 天前
Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架构与负载均衡方案
nginx·spring cloud·gateway
一夜白头催人泪1 天前
【阿里云】使用docker安装nginx后可以直接访问
nginx·阿里云·docker
运维实战课程2 天前
elk(都是6.2.4重点-版本2-收集nginx日志并分析绘图(单点es,redis缓存)-无filebeat
nginx·elk·缓存
计算机毕设定制辅导-无忧学长2 天前
Nginx 安全配置与防护策略
运维·nginx·安全
_Eden_2 天前
Nginx入门学习二
服务器·学习·nginx
tryCbest2 天前
Nginx代理
服务器·javascript·nginx