当前位置: 首页 > news >正文

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CORDIC Translate
  • 【C/C++】内存相关
  • 最接近的三数之和
  • 【Linux】Vim 使用教程
  • C# .net6使用Hangfire
  • 手写new
  • 勒索防御第一关 亚信安全AE防毒墙全面升级 勒索检出率提升150%
  • 技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)
  • 【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}
  • ABC分析模型详解
  • MetaGPT和LangGraph对比
  • 10款性价比高的销售管理信息系统推荐
  • Qt实现MDI应用程序
  • 如何在gitee上创建远程仓库?
  • 对于GPT-5在一年半后发布的期待!
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [case10]使用RSQL实现端到端的动态查询
  • 08.Android之View事件问题
  • C++入门教程(10):for 语句
  • CSS3 变换
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Docker: 容器互访的三种方式
  • gops —— Go 程序诊断分析工具
  • HTTP请求重发
  • js面向对象
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Node + FFmpeg 实现Canvas动画导出视频
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 测试如何在敏捷团队中工作?
  • 翻译:Hystrix - How To Use
  • 规范化安全开发 KOA 手脚架
  • 每天10道Java面试题,跟我走,offer有!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端代码风格自动化系列(二)之Commitlint
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 正则表达式-基础知识Review
  • ​Java基础复习笔记 第16章:网络编程
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​数据链路层——流量控制可靠传输机制 ​
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #pragma pack(1)
  • #微信小程序(布局、渲染层基础知识)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)llvm ir转换过程
  • (js)循环条件满足时终止循环
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (苍穹外卖)day03菜品管理