http-headers
X-Request-ID
Sök…
Introduktion
X-Request-ID rubriken kan användas för att spåra enskilda förfrågningar till en webbtjänst (till exempel ett REST-API) från klienten till servern och dess backends.
Syntax
- X-Request-ID: <värde>
Anmärkningar
En klient kan skicka en HTTP-rubrik X-Request-ID: some-value . Servern ska använda det angivna värdet och ge det i alla förfrågningar som den gör för att backendtjänster i syfte att betjäna den initiala begäran. När du skickar svaret kommer servern att returnera samma rubrik tillbaka till klienten. För att spåra kommer servern att inkludera värdet i sina loggar för att möjliggöra korrelerande förfrågningar och svar med motsvarande loggar.
nginx
Omvända proxyer kan upptäcka om en klient tillhandahåller en X-Request-ID-rubrik och vidarebefordra den till backend-servern. Om ingen sådan rubrik tillhandahålls kan den ge ett slumpmässigt värde.
map $http_x_request_id $reqid {
default $http_x_request_id;
"" $request_id;
}
Koden ovan lagrar Request ID i variabeln $reqid varifrån den sedan kan användas i loggar.
log_format trace '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" $reqid';
Det bör också vidarebefordras till backend-tjänsterna
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
Heroku kommer alltid att vidarebefordra en X-Request-ID skicka som skickas av klienten, eller generera sin egen.
Se dokumentation på HTTP Request IDs .
django
När du använder Django som ett ramverk för django-log-request-id paketet django-log-request-id användas för att analysera och logga förfrågnings-ID.
inställningar
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,
},
}
}
Begär ID (begäran / svar)
Samma X-Request-ID rubrik kan skickas av en klient i en begäran eller av en server som svar.
X-Request-ID: f9ed4675f1c53513c61a3b3b4e25b4c0
Värdet har ingen inneboende betydelse, utan är bara ett symbol för att identifiera korrelerande förfrågningar och svar.