Create a unified request identifier

Registered by Aditi Raveesh

Create a unified request identifier associated with an API request that crosses OpenStack service boundaries. This will enable more effective debugging of requests that span multiple services. For example, a Nova instance create request may touch other services including Glance. A single id will simplify the process of tracking down errors.

See related email discussion: https://lists.launchpad.net/openstack/msg13082.html

Proposal:
-The first OpenStack service to touch a request will tag it with a "correlation_id". This will effectively be a global identifier. Inter-service requests will contain this ID in an HTTP header, "X_CORRELATION_ID". This value will be a UUID.

-Each service that touches the request will carry along this header value and use it in log messages and external notifications.

-Each service may have its own internal request identifier (request_id in Nova and Glance) and should also log this value in conjunction with the global identifier.

Question - How to guard against users supplying their own request id value? Check for uniqueness? Only accept request ID headers from certain source IPs?

Refer to https://blueprints.launchpad.net/nova/+spec/cross-service-request-id for further discussions.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Not
Drafter:
None
Direction:
Needs approval
Assignee:
Aditi Raveesh
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Mark Washenberger

Related branches

Sprints

Whiteboard

<jbresnah> is this a duplicate bp: https://blueprints.launchpad.net/glance/+spec/use-unified-request-identifier </jbresnah>

Gerrit topic: https://review.openstack.org/#q,topic:bp/cross-service-request-id,n,z

Addressed by: https://review.openstack.org/33781
    Implements Cross Service Unified Request id

Quoting from a similar patch review in nova:
https://review.openstack.org/#/c/29480/

"The result from the HKG discussion was that we won't have a unified request-id across services, but we'll log id from services when we call out to them so we can trace the request with some post processing. So on a call to Glance we'll log the Nova request_id and the Glance request_id together and send a notification."

So it looks like the only work we need now is in the client, and is covered here:
https://review.openstack.org/#/c/68524/

-markwash

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.