nginx日志分析工具goaccess

官网:https://www.goaccess.cc/

使用手册:https://www.goaccess.cc/?mod=man

nginx日志分析工具goaccess_html

 

nginx日志分析工具goaccess_html_02

 

wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar xf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

报错:

nginx日志分析工具goaccess_字段_03

 

nginx日志分析工具goaccess_html_04

nginx日志分析工具goaccess_html_05

 文档地址:https://www.goaccess.cc/?mod=man

自定义 日志/日期 格式

GoAccess 可以解析虚拟的任意 Web 日志格式。

预定义的选项包括:通用日志格式,联合日志格式,包含虚拟主机,W3C 格式以及亚马逊 CloudFront(分布式下载)。

GoAccess 允许任意的自定义格式字符串。

有两种方法配置日志格式。最简单的方式是运行 GoAccess 时使用 -c 显示一个配置窗口。但是这种方式不是永久有效的,因此你需要在配置文件中设定格式。

配置文件位于:%sysconfdir%/goaccess.conf 或者 ~/.goaccessrc

注意: %sysconfdir% 可能是 /etc//usr/etc/ 或者 /usr/local/etc/

time-format 参数 time-format 后跟随一个空格符,指定日志的时间格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号 (%)开始。参考 `man strftime`。 %T 或者 %H:%M:%S.

注意: 如果给定的时间戳以微秒计算,则必须在 time-format 中使用参数 %f 。

date-format 参数 date-format 后跟随一个空格符,指定日志的日期格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号 (%)开始。参考 `man strftime`。

注意: 如果给定的时间戳以微秒计算,则必须在 time-format 中使用参数 %f 。

log-format 参数 log-format 后跟随一个空格符或者制表分隔符(\t),用于指定日志字符串格式。

特殊格式说明符

  • %x 匹配 time-format 和 date-format 变量的日期和时间字段。用于使用时间戳来代替日期和时间两个独立变量的场景。
  • %t 匹配 time-format 变量的时间字段。
  • %d 匹配 date-format 变量的日期字段。
  • %v 根据 canonical 名称设定的服务器名称(服务区或者虚拟主机)。
  • %e 请求文档时由 HTTP 验证决定的用户 ID。
  • %h 主机(客户端IP地址,IPv4 或者 IPv6)。
  • %r 客户端请求的行数。这些请求使用分隔符(单引号,双引号)引用的部分可以被解析。否则,需要使用由特殊格式说明符(例如:%m%U%q 和 %H)组合格式去解析独立的字段。%m 请求的方法。
  • 注意: 既可以使用 %r 获取完整的请求,也可以使用 %m%U%q and %H 去组合你的请求,但是不能同时使用。

  • %U 请求的 URL。%q 查询字符串。
  • 注意: 如果查询字符串在 %U中,则无需使用 %q。但是,如果 URL 路径中没有包含任何查询字符串,则你可以使用 %q 查询字符串将附加在请求后面。

  • %H 请求协议。
  • %s 服务器回传客户端的状态码。
  • %b 回传客户端的对象的大小。
  • %R HTTP 请求的 "Referer" 值。
  • %u HTTP 请求的 "UserAgent" 值。
  • %D 处理请求的时间消耗,使用微秒计算。
  • %T 处理请求的时间消耗,使用带秒和毫秒计算。
  • %L 处理请求的时间消耗,使用十进制数表示的毫秒计算。
  • %^ 忽略此字段。
  • %~ 继续解析日志字符串直到找到一个非空字符(!isspace)。
  • ~h 在 X-Forwarded-For (XFF) 字段中的主机(客户端 IP 地址,IPv4 或者 IPv6)。

 注意
针对 XFF, GoAccess 使用了一个特殊符号,即由一个波浪号+主机说明符构成,然后紧跟由大括号封装起来的 XFF 限定字段(例:~h{,"})。
举例如下, ~h{," } 用于解析 "11.25.11.53, 17.68.33.17" 字段由一对双引号,一个逗号和一个空格限定。

 注意
为了得到平均,累计,最大处理时间,将需要开始在 Web 服务器中记录响应次数。在 Nginx 中可以添加 $request_time 到日志格式中,或者 %D 在 Apache 中。

 

实时 HTML 输出

GoAccess 有能力在 HTML 报告中展示实时数据。您甚至可以通过电子邮件发送 HTML 报告,因为它是由没有外部文件依赖的单个文件组成,是不是很酷!

生成实时 HTML 报告的过程和生成静态报告的过程非常相似。实时报告仅仅需要使用参数 --real-time-html 。

# goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html

GoAccess 默认使用生成报告的主机名。您也可以指定 URL 用于客户端浏览器访问。参考 FAQ 上更详细的示例。

# goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io

GoAccess 默认侦听端口 7890,如下使用其他端口可以这样操作(确保端口已经打开):

# goaccess access.log -o report.html --real-time-html --port=9870

绑定 WebSocket 服务器到不同于 0.0.0.0 的另外一个地址,可以这样操作:

# goaccess access.log -o report.html --real-time-html --addr=127.0.0.1

注意: 如果需要在加密连接上输出实时数据,则需要使用 --ssl-cert=<cert.crt> 和 --ssl-key=<priv.key>