Définition d'un ID de trace dans l'équilibreur de charge nginx
Je suis en utilisant nginx comme un équilibreur de charge en face de plusieurs amont application des serveurs et je veux mettre une trace de l'id à utiliser pour corréler les demandes avec l'app journaux du serveur. Quelle est la meilleure façon de le faire que dans Nginx, est-il un bon 3ème partie module pour cela?
Sinon d'une manière assez simple serait pour elle hors de la base de timestamp (plus éventuellement un nombre aléatoire si ce n'est pas assez précis) et le définir comme un en-tête supplémentaire sur la demande, mais la seule set_header de commande je vois dans les docs est utilisée pour définir un en-tête de réponse.
source d'informationauteur danny
Vous devez vous connecter pour publier un commentaire.
Dans la plupart des cas, vous n'avez pas besoin d'un module personnalisé, vous pouvez simplement définir un
en-tête avec une combinaison de variables intégrées de http_core_module
qui est (très probablement) unique. Exemple:
Cela donnerait une id de la demande comme "31725-1406109429.299-127.0.0.1-1227"
et doit être "assez unique" pour servir en tant que trace de l'id.
nginx 1.11.0 ajout d'une nouvelle variable
$request_id
qui est un identifiant unique, de sorte que vous pouvez faire quelque chose comme:Voir la référence à http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_id
Dans notre environnement de production, nous avons un module personnalisé de ce genre. Il peut générer une trace unique id et ensuite il sera poussé dans les en-têtes http qui envoyer vers le serveur en amont. Le serveur vérifie si le champ est défini, il sera obtenir la valeur et de l'écrire pour access_log, ainsi, nous pouvons retracer la demande.
Et je trouve un 3ème partie module semble tout à fait les mêmes: nginx-operationidespérons que cela est utile.
Vieille question, nouvelle réponse adaptée pour nginx verions
1.3.8
1.2.5
et au-dessus.Vous pouvez utiliser une combinaison de
$connection
et$connection_requests
maintenant.Il suffit de définir vos propres variables:
Cet id est unique dans nginx, à moins que le serveur est redémarré.
Bonus: Faire
$trace_id
unique, même après redémarrage du serveur: