您的位置:首页 > 运维架构 > Nginx

使用goaccess解析nginx日志

2016-08-12 17:11 302 查看
由于我指定了安装路径为/usr/local/goaccess

因此运行主程序在该路径的bin目录下,配置文件在etc下

使用方法:

直接解析

在nginx日志目录下运行

/usr/local/goaccess/bin/goaccess -f access.log

或是输出html文件

/usr/local/goaccess/bin/goaccess -f access.log -a > test.html

然而实际使用过程中一直报错:

Fatal error has occurred
Error occured at: src/goaccess.c - main - 1230
Nothing valid to process. Verify your date/time/log format.

原因是所使用的nginx的日志经过定制,并不是常用的日志格式,因此需要根据nginx日志格式修改goaccess的日志解析配置。

这是nginx中当前所使用的日志配置:

[$time_local] - $server_name - $remote_addr - $upstream_addr - $remote_user - "$request" $status $upstream_status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time $request_time

据此修改goaccess配置文件/usr/local/goaccess/etc/goaccess.conf

添加日志配置:

date-format %d/%b/%Y
time-format %H:%M:%S
log-format [%d:%t %^] %^ %v %^ %h %^ %^ %^ %^ %^ "%r" %s %^ %b "%R" "%u" %T %^

说明:

date-format日期格式中,%d为天、%b为月份缩写、%Y为年

time-format时间格式中,%H、%M、%S分别为时、分、秒

log-format日志格式中,%d为引用日期格式配置、%t为引用日期格式配置、%^为忽略该项、%v为服务器名、%h为远端ip地址、%r为实际请求、%s为请求返回状态、%b为请求大小、%R为http referer头 、%u为http用户代理、%T为响应时间

要注意以下几点:

1、log-format中必须要有 %d、%h、%r

2、格式要一一对应

3、不能有重复的项

附goaccess在线手册:
https://goaccess.io/man#custom-log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: