Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit cdf7508

Browse files
committed
Opentracing misc (#5856)
2 parents 6cb514c + 87fa260 commit cdf7508

File tree

4 files changed

+25
-16
lines changed

4 files changed

+25
-16
lines changed

changelog.d/5856.feature

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add a tag recording a request's authenticated entity and corresponding servlet in opentracing.

synapse/api/auth.py

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
from twisted.internet import defer
2424

25+
import synapse.logging.opentracing as opentracing
2526
import synapse.types
2627
from synapse import event_auth
2728
from synapse.api.constants import EventTypes, JoinRules, Membership
@@ -178,6 +179,7 @@ def can_federate(self, event, auth_events):
178179
def get_public_keys(self, invite_event):
179180
return event_auth.get_public_keys(invite_event)
180181

182+
@opentracing.trace
181183
@defer.inlineCallbacks
182184
def get_user_by_req(
183185
self, request, allow_guest=False, rights="access", allow_expired=False
@@ -210,6 +212,7 @@ def get_user_by_req(
210212

211213
if user_id:
212214
request.authenticated_entity = user_id
215+
opentracing.set_tag("authenticated_entity", user_id)
213216

214217
if ip_addr and self.hs.config.track_appservice_user_ips:
215218
yield self.store.insert_client_ip(
@@ -260,6 +263,7 @@ def get_user_by_req(
260263
)
261264

262265
request.authenticated_entity = user.to_string()
266+
opentracing.set_tag("authenticated_entity", user.to_string())
263267

264268
return synapse.types.create_requester(
265269
user, token_id, is_guest, device_id, app_service=app_service

synapse/federation/transport/server.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
from twisted.internet.defer import maybeDeferred
2323

2424
import synapse
25-
import synapse.logging.opentracing as opentracing
2625
from synapse.api.errors import Codes, FederationDeniedError, SynapseError
2726
from synapse.api.room_versions import RoomVersions
2827
from synapse.api.urls import (
@@ -39,6 +38,7 @@
3938
parse_string_from_args,
4039
)
4140
from synapse.logging.context import run_in_background
41+
from synapse.logging.opentracing import start_active_span_from_context, tags
4242
from synapse.types import ThirdPartyInstanceID, get_domain_from_id
4343
from synapse.util.ratelimitutils import FederationRateLimiter
4444
from synapse.util.versionstring import get_version_string
@@ -289,16 +289,17 @@ async def new_func(request, *args, **kwargs):
289289
raise
290290

291291
# Start an opentracing span
292-
with opentracing.start_active_span_from_context(
292+
with start_active_span_from_context(
293293
request.requestHeaders,
294294
"incoming-federation-request",
295295
tags={
296296
"request_id": request.get_request_id(),
297-
opentracing.tags.SPAN_KIND: opentracing.tags.SPAN_KIND_RPC_SERVER,
298-
opentracing.tags.HTTP_METHOD: request.get_method(),
299-
opentracing.tags.HTTP_URL: request.get_redacted_uri(),
300-
opentracing.tags.PEER_HOST_IPV6: request.getClientIP(),
297+
tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER,
298+
tags.HTTP_METHOD: request.get_method(),
299+
tags.HTTP_URL: request.get_redacted_uri(),
300+
tags.PEER_HOST_IPV6: request.getClientIP(),
301301
"authenticated_entity": origin,
302+
"servlet_name": request.request_metrics.name,
302303
},
303304
):
304305
if origin:

synapse/http/matrixfederationclient.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
from twisted.web._newclient import ResponseDone
3737
from twisted.web.http_headers import Headers
3838

39-
import synapse.logging.opentracing as opentracing
4039
import synapse.metrics
4140
import synapse.util.retryutils
4241
from synapse.api.errors import (
@@ -50,6 +49,12 @@
5049
from synapse.http.client import BlacklistingAgentWrapper, IPBlacklistingResolver
5150
from synapse.http.federation.matrix_federation_agent import MatrixFederationAgent
5251
from synapse.logging.context import make_deferred_yieldable
52+
from synapse.logging.opentracing import (
53+
inject_active_span_byte_dict,
54+
set_tag,
55+
start_active_span,
56+
tags,
57+
)
5358
from synapse.util.async_helpers import timeout_deferred
5459
from synapse.util.metrics import Measure
5560

@@ -341,20 +346,20 @@ def _send_request(
341346
query_bytes = b""
342347

343348
# Retreive current span
344-
scope = opentracing.start_active_span(
349+
scope = start_active_span(
345350
"outgoing-federation-request",
346351
tags={
347-
opentracing.tags.SPAN_KIND: opentracing.tags.SPAN_KIND_RPC_CLIENT,
348-
opentracing.tags.PEER_ADDRESS: request.destination,
349-
opentracing.tags.HTTP_METHOD: request.method,
350-
opentracing.tags.HTTP_URL: request.path,
352+
tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT,
353+
tags.PEER_ADDRESS: request.destination,
354+
tags.HTTP_METHOD: request.method,
355+
tags.HTTP_URL: request.path,
351356
},
352357
finish_on_close=True,
353358
)
354359

355360
# Inject the span into the headers
356361
headers_dict = {}
357-
opentracing.inject_active_span_byte_dict(headers_dict, request.destination)
362+
inject_active_span_byte_dict(headers_dict, request.destination)
358363

359364
headers_dict[b"User-Agent"] = [self.version_string_bytes]
360365

@@ -436,9 +441,7 @@ def _send_request(
436441
response.phrase.decode("ascii", errors="replace"),
437442
)
438443

439-
opentracing.set_tag(
440-
opentracing.tags.HTTP_STATUS_CODE, response.code
441-
)
444+
set_tag(tags.HTTP_STATUS_CODE, response.code)
442445

443446
if 200 <= response.code < 300:
444447
pass

0 commit comments

Comments
 (0)