$ wget https://tar.goaccess.io/goaccess-1.4.2.tar.gz $ tar -xzvf goaccess-1.4.2.tar.gz $ cd goaccess-1.4.2/ $ ./configure --enable-utf8 --enable-geoip=legacy $ make # make install
修改配置文件
nginx日志配置文件
vim /usr/local/etc/goaccess.conf time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
网页实时显示
goaccess -f /data/nginx_access_log/nginx_access_2020-10-27.log -o /data/www/public/report.html -p /usr/local/etc/goaccess.conf --real-time-html --daemonize
nginx日志转goaccess给可参考 https://github.com/stockrt/nginx2goaccess
将report.html 放到web服务器目录下
nginx日志格式设置
log_format可设置的参数格式及说明如下:
参数 | 说明 | 示例 |
$remote_addr | 客户端地址 | 119.40.32.45 |
$remote_user | 客户端用户名称 | – |
$time_local | 访问时间和时区 | [20/Nov/2014:10:52:09 +0800] |
$request | 请求方法、URI和HTTP协议 | GET /index.html HTTP/1.1 |
$http_host | 请求地址,即浏览器中你输入的地址(IP或域名) | 115.29.149.25/www.rootop.org |
$status | HTTP请求状态 | 200 |
$upstream_status | upstream状态 | 200 |
$body_bytes_sent | 发送给客户端文件内容大小 | 547 |
$http_referer | url跳转来源 | http://www.baidu.com/ |
$http_user_agent | 用户终端浏览器等信息 | “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C; |
$ssl_protocol | SSL协议版本 | TLSv1 |
$ssl_cipher | 交换数据中的算法 | RC4-SHA |
$upstream_addr | 后台upstream的地址,即真正提供服务的主机地址 | 192.168.10.23:80 |
$request_time | 整个请求的总时间 | 00.007 |
$ssl_protocol | SSL协议版本 | TLSv1 |
$http_x_forwarded_for | 客户端地址(nginx做反向代理时) | 119.40.32.45 |
项目地址:https://github.com/allinurl/goaccess
goaccess nginx格式参数
-
%x 与时间格式和日期格式变量匹配的日期和时间字段。当使用时间戳而不是日期和时间在两个单独的变量中时使用这个。
-
%t time字段匹配时间格式变量。
-
%d date字段匹配日期格式变量。
-
%v 根据规范名称设置(服务器块或虚拟主机)的服务器名称。
-
%e 这是通过HTTP身份验证请求文档的用户ID。
-
%h host(客户端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请求标头。
-
%D 服务请求所用的时间,以微秒为单位。
-
%T 以毫秒级分辨率提供服务所需的时间(秒)。
-
%L 服务请求所需的时间,以毫秒为单位,为十进制数。
-
%^ 忽略此字段。
-
%~ 向前移动日志字符串,直到找到一个非空格(!isspace)字符。
-
~h X-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。