http-headers
एक्स-अनुरोध-आईडी
खोज…
परिचय
X-Request-ID हेडर का उपयोग क्लाइंट से सर्वर और उसके बैकेंड्स के लिए एक वेब सेवा (जैसे REST API) के लिए व्यक्तिगत अनुरोधों का पता लगाने के लिए किया जा सकता है।
वाक्य - विन्यास
- X-Request-ID: <value>
टिप्पणियों
कोई क्लाइंट HTTP शीर्ष लेख X-Request-ID: some-value भेज सकता है। सर्वर को प्रदान किए गए मूल्य का उपयोग करना चाहिए और इसे किसी भी अनुरोध में प्रदान करना चाहिए जो प्रारंभिक अनुरोध को पूरा करने के उद्देश्य से सेवाओं का समर्थन करता है। प्रतिक्रिया भेजते समय, सर्वर उसी हेडर को क्लाइंट को वापस कर देगा। अनुरेखण के उद्देश्य के लिए, सर्वर इसके लॉग में मूल्य शामिल करेगा, संबंधित लॉग के साथ अनुरोधों और प्रतिक्रियाओं को सहसंबंधित करने के लिए।
nginx
यदि ग्राहक किसी X-Request-ID हेडर प्रदान करता है, और बैकएंड सर्वर पर इसे पारित कर सकता है, तो रिवर्स प्रॉक्सी का पता लगा सकता है। यदि ऐसा कोई शीर्ष लेख नहीं दिया गया है, तो यह एक यादृच्छिक मूल्य प्रदान कर सकता है।
map $http_x_request_id $reqid {
default $http_x_request_id;
"" $request_id;
}
उपर्युक्त कोड चर आईडी अनुरोध को चर $reqid है जहां से बाद में लॉग में उपयोग किया जा सकता है।
log_format trace '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" $reqid';
इसे बैकएंड सेवाओं पर भी पारित किया जाना चाहिए
location @proxy_to_app {
proxy_set_header X-Request-ID $reqid;
proxy_pass http://backend;
access_log /var/log/nginx/access_trace.log trace;
}
Heroku
हरोकू हमेशा क्लाइंट द्वारा भेजे गए X-Request-ID हेडर पर पास होगा, या अपना खुद का जेनरेट करेगा।
HTTP अनुरोध आईडी पर प्रलेखन देखें।
Django
Django को एक वेब सेवा ढांचे के रूप में उपयोग करते समय, पैकेज django-log-request-id का उपयोग django-log-request-id को पार्स और लॉग करने के लिए किया जा सकता है।
समायोजन
MIDDLEWARE_CLASSES = (
'log_request_id.middleware.RequestIDMiddleware',
# ... other middleware goes here
)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'request_id': {
'()': 'log_request_id.filters.RequestIDFilter'
}
},
'formatters': {
'standard': {
'format': '%(levelname)-8s [%(asctime)s] [%(request_id)s] %(name)s: %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'filters': ['request_id'],
'formatter': 'standard',
},
},
'loggers': {
'myapp': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
}
}
अनुरोध आईडी (अनुरोध / प्रतिक्रिया)
उसी X-Request-ID हेडर को क्लाइंट द्वारा रिक्वेस्ट में या रिस्पांस में सर्वर द्वारा भेजा जा सकता है।
X-Request-ID: f9ed4675f1c53513c61a3b3b4e25b4c0
मूल्य कोई अंतर्निहित अर्थ नहीं रखता है, लेकिन सहसंबद्ध अनुरोधों और प्रतिक्रियाओं की पहचान करने के लिए सिर्फ एक टोकन है।