将 UUID 添加到 Nginx 日志

将 UUID 添加到 Nginx 日志

我需要在每个 Nginx 日志行上都有一个唯一标识符。有没有简单的方法可以添加它?

谢谢!

答案1

如果你能从nginx 变量您可以使用日志格式将其添加到日志中。

一种常见的方法是添加带有 UUID 的 HTTP 标头并在 nginx 上捕获它(它将所有标头作为$http_<header_name>变量公开)以添加到自定义日志格式。

答案2

升级到 nginx >= 1.11,支持$request_id多变的。

或者对于旧版本,您可以使用 Perl 模块生成 UUID,在(或)http部分中:nginx.confconf.d/uuid.conf

perl_require "Data/UUID.pm";
perl_set $request_id 'sub {
   my $ug = new Data::UUID;
   return $ug->create_str();
}';

在 Debian 上你需要nginx-extra包(nginx 中的 Perl 脚本)和libossp-uuid-perl

sudo apt install nginx-extra libossp-uuid-perl

然后您可以附加$request_id到日志或者设置 HTTP 标头:

proxy_set_header Request-Id $request_id

答案3

$connection变量包含连接标识符。它不是全局唯一的,我猜它会在 Nginx 重启后从 0 开始。但它在重启之间应该是唯一的。

相关内容