nginxのリクエストごとの一意のIDを記録する方法はありますか?


12

このためのサードパーティモジュールがいくつかあるようです

ただし、可能であれば、nginxを再構築したくないので、これらのモジュールを両方とも使用する必要があると思います。私の最初の試みは、うまくいかなかったものを使用$msecする$pidことでした(同じミリ秒で2つのリクエストを処理するプロセスがありました)。私は読んだことが$connectionあり、それはと連動して動作するよう$msecです。これは機能しますか、またはサードパーティのモジュールを使用せずに、より良い方法がありますか?

回答:


10

nginxバージョンv1.11の更新(2016年5月):

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_id

以下を使用できます$request_id

16個のランダムバイトから生成された16進数の一意の要求識別子(1.11.0)


古いバージョン(<= 1.2.7)では、 "$ pid- $ date_local"のようなものを使用できます。これは、ほとんどの使用に十分な一意性が必要です。
バクティズム16

6

nginx-extras組み込みPerlまたはLuaを使用および使用できます。

$ sudo apt-get install libossp-uuid-perl

nginx設定で:

perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {

    my $ug = new Data::UUID;
   return $ug->create_str();
}';

そして、与えられたlocation

proxy_set_header Request-Id $request_uuid

これを本番環境で使用しており、バックエンドサービス全体の優れたトレースに非常に満足しています。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.