Tag trace with instance name (#13761)
We tag the Synapse instance name so that it's an easy jumping off point into the logs. Can also be used to filter for an instance that is under load. As suggested by @clokep and @reivilibre in, - https://github.com/matrix-org/synapse/pull/13729#discussion_r964719258 - https://github.com/matrix-org/synapse/pull/13729#discussion_r964733578
This commit is contained in:
parent
f694bb71b7
commit
a911ffb42c
|
@ -0,0 +1 @@
|
||||||
|
Tag traces with the instance name to be able to easily jump into the right logs and filter traces by instance.
|
|
@ -32,6 +32,7 @@ from synapse.appservice import ApplicationService
|
||||||
from synapse.http import get_request_user_agent
|
from synapse.http import get_request_user_agent
|
||||||
from synapse.http.site import SynapseRequest
|
from synapse.http.site import SynapseRequest
|
||||||
from synapse.logging.opentracing import (
|
from synapse.logging.opentracing import (
|
||||||
|
SynapseTags,
|
||||||
active_span,
|
active_span,
|
||||||
force_tracing,
|
force_tracing,
|
||||||
start_active_span,
|
start_active_span,
|
||||||
|
@ -161,6 +162,12 @@ class Auth:
|
||||||
parent_span.set_tag(
|
parent_span.set_tag(
|
||||||
"authenticated_entity", requester.authenticated_entity
|
"authenticated_entity", requester.authenticated_entity
|
||||||
)
|
)
|
||||||
|
# We tag the Synapse instance name so that it's an easy jumping
|
||||||
|
# off point into the logs. Can also be used to filter for an
|
||||||
|
# instance that is under load.
|
||||||
|
parent_span.set_tag(
|
||||||
|
SynapseTags.INSTANCE_NAME, self.hs.get_instance_name()
|
||||||
|
)
|
||||||
parent_span.set_tag("user_id", requester.user.to_string())
|
parent_span.set_tag("user_id", requester.user.to_string())
|
||||||
if requester.device_id is not None:
|
if requester.device_id is not None:
|
||||||
parent_span.set_tag("device_id", requester.device_id)
|
parent_span.set_tag("device_id", requester.device_id)
|
||||||
|
|
|
@ -298,6 +298,8 @@ class SynapseTags:
|
||||||
# Whether the sync response has new data to be returned to the client.
|
# Whether the sync response has new data to be returned to the client.
|
||||||
SYNC_RESULT = "sync.new_data"
|
SYNC_RESULT = "sync.new_data"
|
||||||
|
|
||||||
|
INSTANCE_NAME = "instance_name"
|
||||||
|
|
||||||
# incoming HTTP request ID (as written in the logs)
|
# incoming HTTP request ID (as written in the logs)
|
||||||
REQUEST_ID = "request_id"
|
REQUEST_ID = "request_id"
|
||||||
|
|
||||||
|
@ -1043,11 +1045,11 @@ def trace_servlet(
|
||||||
# with JsonResource).
|
# with JsonResource).
|
||||||
scope.span.set_operation_name(request.request_metrics.name)
|
scope.span.set_operation_name(request.request_metrics.name)
|
||||||
|
|
||||||
# set the tags *after* the servlet completes, in case it decided to
|
|
||||||
# prioritise the span (tags will get dropped on unprioritised spans)
|
|
||||||
request_tags[
|
request_tags[
|
||||||
SynapseTags.REQUEST_TAG
|
SynapseTags.REQUEST_TAG
|
||||||
] = request.request_metrics.start_context.tag
|
] = request.request_metrics.start_context.tag
|
||||||
|
|
||||||
|
# set the tags *after* the servlet completes, in case it decided to
|
||||||
|
# prioritise the span (tags will get dropped on unprioritised spans)
|
||||||
for k, v in request_tags.items():
|
for k, v in request_tags.items():
|
||||||
scope.span.set_tag(k, v)
|
scope.span.set_tag(k, v)
|
||||||
|
|
Loading…
Reference in New Issue