GoAccess 分析 Nginx 日志

安装

yum install -y glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-develyum install gcc
yum install -y GeoIP-update
yum install -y goaccess

安装成功后,可以查看

[root@molaifeng log]# goaccess -V
GoAccess - 1.2.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

配置

/etc/goaccess.conf 添加

time-format %H:%M:%S
date-format %d/%b/%Y

其中 log-format 需要结合 Nginx 日志格式来

分析 Nginx 日志

对于没有配置日志格式的 access_log 来说,只需

goaccess -f access_log -o report.html --real-time-html --log-format=COMBINED

而对于已经配置了日志格式的日志来说,就需要对比 官方手册 来配置了,下面给出配置项

format说明
%x与时间格式和日期格式变量匹配的日期和时间字段。当给出时间戳而不是日期和时间在两个单独的变量中时使用。
%t时间字段匹配时间格式变量。
%d与日期格式变量匹配的日期字段。
%v服务器名称根据规范名称设置(服务器块或虚拟主机)。
%e这是HTTP身份验证确定的请求文档的人的用户标识。
%hhost(客户端IP地址,IPv4或IPv6)
%r来自客户端的请求行。这需要围绕请求的特定分隔符(单引号,双引号等)可解析。否则,使用特殊的格式说明符,如组合%m,%U,%q和%H解析各个字段。注意:使用或者%r获得完整的请求OR
%m请求方法。
%U请求的URL路径。注意:如果查询字符串在%U,则无需使用%q。但是,如果URL路径不包含任何查询字符串,则可以使用%q并将查询字符串附加到请求中。
%q查询字符串。
%H请求协议。
%s服务器发送回客户端的状态代码。
%b返回给客户端的对象大小。
%R“Referer”HTTP请求标头。
%u用户代理HTTP请求标头。
%D服务请求所需的时间,以微秒为单位。
%T服务请求所需的时间,以毫秒为单位,分辨率为毫秒。
%L服务请求所用的时间,以毫秒为单位的十进制数。
%^忽略此字段。
%~向前移动日志字符串,直到找到非空格(!isspace)char。
~hX-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。

比如,我服务器上的 Nginx 日志格式为

log_format  main '"$time_local" client=$remote_addr '
               'method=$request_method request="$request" request_body=$request_body '
               'request_length=$request_length '
               'status=$status bytes_sent=$bytes_sent '
               'body_bytes_sent=$body_bytes_sent '
               'referer=$http_referer '
               'user_agent="$http_user_agent" '
               'upstream_addr=$upstream_addr '
               'upstream_status=$upstream_status '
               'request_time=$request_time '
               'upstream_response_time=$upstream_response_time '
               'upstream_connect_time=$upstream_connect_time '
               'upstream_header_time=$upstream_header_time';

对应得日志记录为

"04/Apr/2019:15:16:26 +0800" client=192.68.1.1 method=GET request="GET /index.html HTTP/1.0" request_body=- request_length=36 status=200 bytes_sent=265 body_bytes_sent=14 referer=- user_agent="-" upstream_addr=- upstream_status=- request_time=0.000 upstream_response_time=- upstream_connect_time=- upstream_header_time=-

那么可以按照上面的配置分别写出下面的两种格式的 --log-format

goaccess -f access_log -o record.html --real-time-html --log-format='"%d:%t %^" %^=%h %^=%m %^="%r" %^=%^ %^=%^ %^=%s %^=%^ %^=%^ %^=%^ %^="%u" %^=%^ %^=%^ %^=%T %^=%^ %^=%^ %^=%^'
goaccess -f access_log -o record.html --real-time-html --log-format='"%d:%t %^" client=%h method=%m request="%r" request_body=%^ request_length=%^ status=%s bytes_sent=%^ body_bytes_sent=%b referer=%R user_agent="%u" upstream_addr=%^ upstream_status=%^ request_time=%T upstream_response_time=%^ upstream_connect_time=%^ upstream_header_time=%^'

其中, -f 指定日志文件, -o 指定输入文本, --real-time-html 实时监控,如果是历史日志可以不用加。打开 record.html 如下图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值