http-headers
X-Request-ID
Buscar..
Introducción
El encabezado X-Request-ID se puede usar para rastrear solicitudes individuales a un servicio web (como una API REST) desde el cliente al servidor y sus backends.
Sintaxis
- X-Request-ID: <valor>
Observaciones
Un cliente puede enviar un encabezado HTTP X-Request-ID: some-value . El servidor debe utilizar el valor provisto y proporcionarlo en cualquier solicitud que realice a los servicios de back-end con el fin de atender la solicitud inicial. Al enviar la respuesta, el servidor devolverá el mismo encabezado al cliente. Para fines de seguimiento, el servidor incluirá el valor en sus registros, para permitir la correlación de solicitudes y respuestas con los registros correspondientes.
nginx
Los proxies inversos pueden detectar si un cliente proporciona un encabezado de X-Request-ID, y pasarlo al servidor backend. Si no se proporciona dicho encabezado, puede proporcionar un valor aleatorio.
map $http_x_request_id $reqid {
default $http_x_request_id;
"" $request_id;
}
El código anterior almacena el Id. De solicitud en la variable $reqid desde donde se puede usar posteriormente en los registros.
log_format trace '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" $reqid';
También debe pasarse a los servicios de backend.
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 siempre pasará un encabezado X-Request-ID enviado por el cliente, o generará el suyo propio.
Consulte la documentación en ID de solicitud HTTP .
Django
Cuando se usa Django como marco de servicios web, el paquete django-log-request-id se puede usar para analizar y registrar las ID de solicitud.
Ajustes
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,
},
}
}
ID de solicitud (solicitud / respuesta)
El mismo encabezado de X-Request-ID puede ser enviado por un cliente en una solicitud, o por un servidor en una respuesta.
X-Request-ID: f9ed4675f1c53513c61a3b3b4e25b4c0
El valor no tiene ningún significado inherente, pero es solo un token para identificar solicitudes y respuestas correlacionadas.