Nginx Amplify 扩展访问日志和 GoAccess 虚拟主机

Nginx Amplify 扩展访问日志和 GoAccess 虚拟主机

我正在运行安装了 Nginx Amplify 的 Nginx。为了获得更好的指标,我将访问日志格式扩展为:

log_format  main_ext  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$host" sn="$server_name" '
                      'rt=$request_time '
                      'ua="$upstream_addr" us="$upstream_status" '
                      'ut="$upstream_response_time" ul="$upstream_response_length" '
                      'cs=$upstream_cache_status' ;

以上格式来自 Amplify 官方文档。

一切运行正常,扩展指标包含在 Amplify 网络面板中。

为了提高访问日志的可读性,我还安装了 GoAccess 包。当我使用 COMBINED 日志格式启动 GoAccess 时,它可以正常工作。但我已经配置了一些虚拟主机(目前未显示在 GoAccess 报告页面中),因此我应该使用 VCOMBINED 格式,但它会产生错误:

Token '+0100]' doesn't match specifier '%h'

为了使其工作,我将命令更改为:

sudo goaccess /var/log/nginx/access.log \
        --log-format=VCOMBINED \
        --date-format=%d/%b/%Y --time-format=%T \
        -o /var/www/stats/report.html \
        --real-time-html

但出现了同样的错误。我不知道如何创建有效的日志模式以与 amplify 和支持虚拟主机的 GoAccess 配合使用。我尝试了一些 awk 技巧,但没有成功。

答案1

main_ext 日志格式是 Nginx Amplify 虚构的,它不是 VCOMBINED。

这也许对你有用

time-format %T %z
date-format %d/%b/%Y

如果你不使用 CDN 或负载均衡器,则使用日志格式

log-format %h %^ %^ [%d:%t] "%r" %s %b "%R" "%u" "%^" "%^" sn="%v" rt=%T %^

如果您位于 CDN 或负载均衡器后面,请使用日志格式

log-format %^ %^ %^ [%d:%t] "%r" %s %b "%R" "%u" "%h" "%^" sn="%v" rt=%T %^

相关内容