Nginx 日志解析:GoAccess 格式配置

本文将展示如何将 Nginx 日志数据转换为 GoAccess 可识别的格式,方便使用 GoAccess 进行日志分析。

Nginx 日志示例:

{ "@timestamp":"2023-04-23T16:52:06+08:00", "host":"10.0.0.4", "clientip":"58.32.238.44", "remote_user":"-", "request":"GET /wms/rf/pick/pref HTTP/1.1", "http_user_agent":"okhttp/4.5.0", "size":762, "responsetime":0.008, "uct":0.001, "uht":0.008 , "upstreamtime":"0.008", "upstreamhost":"10.0.0.4:6001", "http_host":"rmwms.pepsichina.cn", "url":"/wms/rf/pick/pref", "domain":"rmwms.pepsichina.cn", "xff":"-", "referer":"-", "status":"200", "connection_upgrade":"close", "http_upgrade", "-" }

根据示例生成的 GoAccess log-format:

%{JSON:@timestamp} %h %^[%d:%t %^] '%r' %s %b '%u' '%^' '%^' '%^' %T %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ %^ 

解释:

  • %{JSON:@timestamp}:提取日志中 @timestamp 字段的值,表示访问时间。
  • %h:提取日志中 host 字段的值,表示服务器 IP 地址。
  • %^[%d:%t %^]:提取日志中 @timestamp 字段的日期和时间部分。
  • '%r':提取日志中 request 字段的值,表示请求信息。
  • %s:提取日志中 status 字段的值,表示 HTTP 状态码。
  • %b:提取日志中 size 字段的值,表示响应大小。
  • '%u':提取日志中 http_user_agent 字段的值,表示用户代理。
  • '%^':用于提取其他字段的值,例如 refererxff 等。
  • %T:提取日志中 responsetime 字段的值,表示响应时间。

使用 GoAccess 解析 Nginx 日志时,需要将 Nginx 日志配置成上述格式,才能让 GoAccess 识别并分析日志数据。

注意事项:

  • GoAccess 支持多种日志格式,可以根据实际需求选择合适的格式。
  • 为了提高解析效率,建议将 Nginx 日志配置成 GoAccess 支持的格式。
  • 可以使用 goaccess -h 查看 GoAccess 支持的所有日志格式。

原文地址: https://www.cveoy.top/t/topic/nF2p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录