diff --git a/bookwyrm/activitystreams.py b/bookwyrm/activitystreams.py index d4dac1412..74471883e 100644 --- a/bookwyrm/activitystreams.py +++ b/bookwyrm/activitystreams.py @@ -4,10 +4,15 @@ from django.dispatch import receiver from django.db import transaction from django.db.models import signals, Q from django.utils import timezone +from opentelemetry import trace from bookwyrm import models from bookwyrm.redis_store import RedisStore, r from bookwyrm.tasks import app, LOW, MEDIUM, HIGH +from bookwyrm.telemetry import open_telemetry + + +tracer = open_telemetry.tracer() class ActivityStream(RedisStore): @@ -136,8 +141,10 @@ class ActivityStream(RedisStore): ) return audience.distinct() - def get_audience(self, status): # pylint: disable=no-self-use + @tracer.start_as_current_span("ActivityStream.get_audience") + def get_audience(self, status): """given a status, what users should see it""" + trace.get_current_span().set_attribute("stream_id", self.key) return [user.id for user in self._get_audience(status)] def get_stores_for_object(self, obj): @@ -160,7 +167,9 @@ class HomeStream(ActivityStream): key = "home" + @tracer.start_as_current_span("HomeStream.get_audience") def get_audience(self, status): + trace.get_current_span().set_attribute("stream_id", self.key) audience = super()._get_audience(status) if not audience: return [] diff --git a/bookwyrm/telemetry/open_telemetry.py b/bookwyrm/telemetry/open_telemetry.py index aff68a8b3..2798582d0 100644 --- a/bookwyrm/telemetry/open_telemetry.py +++ b/bookwyrm/telemetry/open_telemetry.py @@ -10,7 +10,7 @@ if settings.OTEL_EXPORTER_CONSOLE: trace.get_tracer_provider().add_span_processor( BatchSpanProcessor(ConsoleSpanExporter()) ) -else: +elif settings.OTEL_EXPORTER_OTLP_ENDPOINT: trace.get_tracer_provider().add_span_processor( BatchSpanProcessor(OTLPSpanExporter()) ) @@ -29,3 +29,7 @@ def instrumentCelery(): @worker_process_init.connect(weak=False) def init_celery_tracing(*args, **kwargs): CeleryInstrumentor().instrument() + + +def tracer(): + return trace.get_tracer(__name__)