用goaccess对tomcat访问日志进行统计分析
goaccess官方下载:https://goaccess.io/download
LC_TIME="en_US.UTF-8" bash -c "goaccess ~/Downloads/api/access_log.2021-06-29.txt \
--log-format='%h %u %e [%d:%t] \"%m %U %H\" %s %b' \
--date-format='%d/%b/%Y' \
--time-format='%H:%M:%S +0800'"
参数说明:LC_TIME适应日期中月份为英文缩写的情况。"%m %U %H" 默认日志中这一段其实就是原始HTTP请求报文的第一行,因此也可以用"%r"来代替。这里需要注意一个问题,就是有些时候我们会在请求URL中拼接querystring,但数据采用post body方式传递,此时由于querystring内容不同,无法被统计,可以通过 “%m %U?%^” 的方式只捕捉请求方法、URL,忽略问号之后的内容。
需要注意的是,命令行方式各面板最多展示7条统计记录,需要查看完整的,可以生成html报表并指定面板展示最大记录数,例如(下面是windows版下的命令):
LC_TIME="en_US.UTF-8" bash -c "goaccess /cygdrive/c/access_log.2021-06-29.txt \
#每个面板最多100条记录,忽略URL中的查询字符串
--max-items=100 --no-query-string \
--log-format='%h %u %e [%d:%t] \"%m %U %H\" %s %b' \
--date-format='%d/%b/%Y' \
--time-format='%H:%M:%S +0800' \
#输出无效的请求到文件中
--invalid-requests=/cygdrive/c/invalid_req.txt \
#生成HTML报告
--output=/cygdrive/c/report.html"
命令行效果如下: