nginx 日志分析工具goaccess的使用以及碰到的坑
2016-01-16 11:00
706 查看
1, goaccess 的介绍和安装
这块网上内容一大堆,就无需再多讲了,我是在centos下直接用yum安装,安装后goaccess的配置文件会在/etc/goaccess.conf
2, goaccess使用
在存放日志文件的目录下,直接goaccess -f xxx.log 即可。 goaccess使用的相关参数请参考官方文档http://www.goaccess.io/man 或者man goaccess
3, goaccess的配置文件介绍
打开/etc/goaccess.conf,里面的最主要的几个配置为:
(1) time-format %H:%M:%S
(2) date-format %d/%b/%Y
(3) log-format
4, 在使用goaccess分析nginx日志时碰到的坑
网络上大部分的文章和介绍都只适合没任何修改的nginx日志格式,对自定义的log format都不怎么涉及。如果你采用的自定义的nginx日志格式,那么此处就需要特别注意,一旦log-format配置不对,goaccess分析的结果会差很大。
以我nginx日志格式为例:
按照goaccess预设的log format,这样的日志是没法分析的,所以我们需要自定义log format。
我的log format为:
log-format %^ %h %^ %^ [%d:%t %^] “%r” %s %b “%R” “%u” “%^” %^ %T %^
为了设置正确的log format,踩了不少坑,先列出来避免大家重复碰到。
(1) log format默认是按照空格分隔日志信息的,所以,对于包含了特殊字符如空格等信息的字段,必须包含在“”里面。如字段request http_user_agent等
(2) nginx日志格式里面,采用空格分隔,但是此处一定注意,只能用一个空格。当时我有个地方用了两个空格,直接导致goaccess结果出错。
(3) nginx日志中的每一个字段都要和log format中的一一对应,如果log format中不需要nginx中的某一个信息,则用%^跳过该信息。
(4) 对于nginx日志中的每一个 -, log format都需要一个%^来跳过, 如果是“-”, 则用“%^”
(5) 如果nginx日志信息中有:, 则需要在log format中也显示出来。例如nginx日志中$time_local就包含了:,所以在log format的相应位置也是 [%d:%t %^]
希望这些能帮助使用goaccess的朋友。
这块网上内容一大堆,就无需再多讲了,我是在centos下直接用yum安装,安装后goaccess的配置文件会在/etc/goaccess.conf
2, goaccess使用
在存放日志文件的目录下,直接goaccess -f xxx.log 即可。 goaccess使用的相关参数请参考官方文档http://www.goaccess.io/man 或者man goaccess
3, goaccess的配置文件介绍
打开/etc/goaccess.conf,里面的最主要的几个配置为:
(1) time-format %H:%M:%S
(2) date-format %d/%b/%Y
(3) log-format
4, 在使用goaccess分析nginx日志时碰到的坑
网络上大部分的文章和介绍都只适合没任何修改的nginx日志格式,对自定义的log format都不怎么涉及。如果你采用的自定义的nginx日志格式,那么此处就需要特别注意,一旦log-format配置不对,goaccess分析的结果会差很大。
以我nginx日志格式为例:
log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '$upstream_addr $request_time $upstream_response_time';
按照goaccess预设的log format,这样的日志是没法分析的,所以我们需要自定义log format。
我的log format为:
log-format %^ %h %^ %^ [%d:%t %^] “%r” %s %b “%R” “%u” “%^” %^ %T %^
为了设置正确的log format,踩了不少坑,先列出来避免大家重复碰到。
(1) log format默认是按照空格分隔日志信息的,所以,对于包含了特殊字符如空格等信息的字段,必须包含在“”里面。如字段request http_user_agent等
(2) nginx日志格式里面,采用空格分隔,但是此处一定注意,只能用一个空格。当时我有个地方用了两个空格,直接导致goaccess结果出错。
(3) nginx日志中的每一个字段都要和log format中的一一对应,如果log format中不需要nginx中的某一个信息,则用%^跳过该信息。
(4) 对于nginx日志中的每一个 -, log format都需要一个%^来跳过, 如果是“-”, 则用“%^”
(5) 如果nginx日志信息中有:, 则需要在log format中也显示出来。例如nginx日志中$time_local就包含了:,所以在log format的相应位置也是 [%d:%t %^]
希望这些能帮助使用goaccess的朋友。
相关文章推荐
- nginx的部署初级(上)
- Nginx设置重定向跳转
- 同步异步,阻塞非阻塞 和nginx的IO模型
- php7.0 + mysql5.7.10 + nginx7.0 web开发环境搭建(CentOS7)
- nginx不记录指定文件类型的日志
- nginx源代码分析--模块分类
- NGINX下PHP-FPM占用内存状态及进程数调整
- 让 Nginx 支持 WAF 防护功能实战
- nginx 学习笔记
- nginx 多服务配置
- 如何找出nginx配置文件的所在位置
- nginx配置location总结及rewrite规则写法
- nginx upstream的几种配置方式
- nginx下502和504错误的解决办法
- 创建并部署自签名的 SSL 证书到 Nginx
- nginx 日志切割
- Nginx中文参考手册
- nginx拦截源站404错误
- haproxy后端nginx取得用户访问ip地址
- nginx 301 302跳转配置方法 与 总结