娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

goaccess分析nginx日志

goaccess分析nginx日志

1.nginx日志配置

常规的nginx日志解析网上有很多相关的文章,但是json_analytics格式的却很少,就以这个为例,nginx日志配置:

log_format json_analytics escape=json '{'
   '"msec": "$msec", '
   '"connection": "$connection", '
   '"connection_requests": "$connection_requests", '
   '"pid": "$pid", '
   '"request_id": "$request_id", '
   '"request_length": "$request_length", '
   '"remote_addr": "$remote_addr", '
   '"remote_user": "$remote_user", '
   '"remote_port": "$remote_port", '
   '"time_local": "$time_local", '
   '"time_iso8601": "$time_iso8601", '
   '"request": "$request", '
   '"request_uri": "$request_uri", '
   '"args": "$args", '
   '"status": "$status", '
   '"body_bytes_sent": "$body_bytes_sent", '
   '"bytes_sent": "$bytes_sent", '
   '"http_referer": "$http_referer", '
   '"http_user_agent": "$http_user_agent", '
   '"http_x_forwarded_for": "$http_x_forwarded_for", '
   '"http_host": "$http_host", '
   '"server_name": "$server_name", '
   '"request_time": "$request_time", '
   '"upstream": "$upstream_addr", '
   '"upstream_connect_time": "$upstream_connect_time", '
   '"upstream_header_time": "$upstream_header_time", '
   '"upstream_response_time": "$upstream_response_time", '
   '"upstream_response_length": "$upstream_response_length", '
   '"upstream_cache_status": "$upstream_cache_status", '
   '"ssl_protocol": "$ssl_protocol", '
   '"ssl_cipher": "$ssl_cipher", '
   '"scheme": "$scheme", '
   '"request_method": "$request_method", '
   '"server_protocol": "$server_protocol", '
   '"pipe": "$pipe", '
   '"gzip_ratio": "$gzip_ratio", '
   '"http_cf_ray": "$http_cf_ray",'
   #如果没有geo模块可以注释掉
   #'"geoip_country_code": "$geoip_country_code"'
'}';

access_log logs/access.log json_analytics;

2.安装goaccess

有2种安装方式,可以使用yum或者源码包,本次采用源码包安装,下载地址:

https://goaccess.io/

安装到/data/goaccess目录

[root@rockettest-161 dl]# tar -zxvf goaccess-1.2.tar.gz 
[root@rockettest-161 dl]# cd goaccess-1.2/
[root@rockettest-161 goaccess-1.2]# ./configure --prefix=/data/goaccess --enable-geoip --enable-utf8
[root@rockettest-161 goaccess-1.2]# cd /data/goaccess
[root@rockettest-161 goaccess]# pwd
/data/goaccess
[root@rockettest-161 goaccess]# ls
bin etc share
[root@rockettest-161 goaccess]# ln -s /data/goaccess/bin/goaccess /usr/bin/
[root@rockettest-161 goaccess]# goaccess --v
GoAccess - 1.2.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana
[root@rockettest-161 goaccess]#

可以看到以上信息说明安装完成

3.配置

修改配置文件/data/goaccess/etc/goaccess.conf

3.1修改–time-format
time-format %H:%M:%S
3.1修改–date-format
date-format %d/%b/%Y
3.1修改–log-format
log-format %^:%^,%^:%^,%^:%^,%^:%^,%^:%^,%^:%^,%^:%*"%h",%^:%^,%^:%^,%^:%*"%d:%t %^",%^:%^,%^:%^,%^:%U,%^:%^,%^:%
*"%s",%^:%^,%^:%*"%b",%^:%*"%R",%^:%*"%u",%^:%^,%^:%^,%^:%^,%^:%*"%T",%^:%^,%^:%^,%^:%^,%^:%^,%^:%^,%^:%^,%^:%^,%
^:%^,%^:%^,%^:%*"%m",%^:%*"%H",%^:%^,%^:%^,%^:%^

log-format要和日志中的字段一一对应,%^表示忽略,%*表示匹配所有,另外goaccess支持的指标列表如下:

%x 与时间格式和日期格式变量匹配的日期和时间字段。当给出时间戳而不是日期和时间在两个单独的变量中时使用。
%t 与时间格式变量匹配的时间字段。
%d 与日期格式变量匹配的日期字段。
%v 根据规范名称设置(服务器块或虚拟主机)的服务器名称。
%e 这是请求文档的人的用户 ID,由 HTTP 身份验证确定。
%C 服务器服务的对象的缓存状态。
%h 主机(客户端 IP 地址,IPv4 或 IPv6)
%r 来自客户端的请求行。这要求请求周围的特定分隔符(单引号、双引号等)是可解析的。否则,请使用特殊格式说明符(例如 、 和 )的组合%m来%U解析%q各个%H字段。
注意:使用其中一个%r来获取完整的请求,或者 %m,和来形成您的请求,不要同时使用两者。%U%q%H
%m 请求方法。
%U 请求的 URL 路径。
注意:如果查询字符串在 中%U,则无需使用%q. 但是,如果 URL 路径不包含任何查询字符串,您可以使用%q并将查询字符串附加到请求中。
%q 查询字符串。
%H 请求协议。
%s 服务器发送回客户端的状态码。
%b 返回给客户端的对象的大小。
%R “Referer”HTTP 请求标头。
%u 用户代理 HTTP 请求标头。
%K 为连接选择的 TLS 加密设置。(在 Apache 日志格式中:) %{SSL_PROTOCOL}x。
%k 为连接选择的 TLS 加密设置。(在 Apache 日志格式中:) %{SSL_CIPHER}x。
%M 所请求资源的 MIME 类型。(在 Apache 日志格式中:%{Content-Type}o)
%D 服务请求所花费的时间,以微秒为单位。
%T 处理请求所花费的时间,以秒为单位,以毫秒为单位。
%L 服务请求所花费的时间,以毫秒为十进制数。
%^ 忽略此字段。
%~ 向前浏览日志字符串,直到找到非空格 (!isspace) 字符。
~h X-Forwarded-For (XFF) 字段中的主机(客户端 IP 地址,IPv4 或 IPv6)

4.解析日志

生产HTML报告

goaccess access.log -o report.html

生产json报告

goaccess access.log -d -o report.json

生产csv报告

goaccess access.log --no-csv-summary -o report.csv

实时html输出

goaccess access.log -o report.html --real-time-html

可以将页面实时输出到web站点,通过web站点来实时访问

其他功能可以参考官方文档

赞(0)
未经允许不得转载:娃哈哈好喝 » goaccess分析nginx日志
分享到: 更多 (0)