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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow