Apakah ada cara untuk mencatat id unik per permintaan untuk nginx?

12

Tampaknya ada beberapa modul pihak ketiga untuk ini

Namun jika memungkinkan saya tidak ingin membangun kembali nginx, yang saya percaya, adalah persyaratan untuk menggunakan kedua modul ini. Percobaan awal saya adalah untuk digunakan $msecdengan $pidtetapi itu tidak berhasil (saya punya proses melayani dua permintaan pada milidetik yang sama). Saya sudah membaca tentang $connectiondan sepertinya itu akan bekerja bersama $msec. Apakah ini akan berhasil atau ada cara yang lebih baik tanpa menggunakan modul pihak ketiga?

John
sumber

Jawaban:

10

Pembaruan untuk nginx versi v1.11 (Mei 2016):

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

Anda bisa menggunakan $request_id:

pengidentifikasi permintaan unik yang dihasilkan dari 16 byte acak, dalam heksadesimal (1.11.0)

pengguna5994461
sumber
Untuk versi lama (<= 1.2.7), Anda dapat menggunakan sesuatu seperti "$ pid- $ date_local" yang seharusnya cukup unik untuk sebagian besar penggunaan.
Bactisme
6

Anda dapat menggunakan nginx-extrasdan menggunakan Perl atau Lua yang tertanam.

$ sudo apt-get install libossp-uuid-perl

Dalam konfigurasi nginx Anda:

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

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

Dan kemudian diberikan location:

proxy_set_header Request-Id $request_uuid

Kami menggunakan ini dalam produksi dan sangat senang dengan penelusuran yang lebih baik yang kami miliki di seluruh layanan backend kami.

jabley
sumber