mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-10-31 22:19:00 +00:00
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from opentelemetry import trace
|
|
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
|
from opentelemetry.sdk.trace import TracerProvider, Tracer
|
|
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
|
|
|
|
from bookwyrm import settings
|
|
|
|
trace.set_tracer_provider(TracerProvider())
|
|
if settings.OTEL_EXPORTER_CONSOLE:
|
|
trace.get_tracer_provider().add_span_processor(
|
|
BatchSpanProcessor(ConsoleSpanExporter())
|
|
)
|
|
elif settings.OTEL_EXPORTER_OTLP_ENDPOINT:
|
|
trace.get_tracer_provider().add_span_processor(
|
|
BatchSpanProcessor(OTLPSpanExporter())
|
|
)
|
|
|
|
|
|
def instrumentDjango() -> None:
|
|
from opentelemetry.instrumentation.django import DjangoInstrumentor
|
|
|
|
DjangoInstrumentor().instrument()
|
|
|
|
|
|
def instrumentPostgres() -> None:
|
|
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
|
|
|
|
Psycopg2Instrumentor().instrument()
|
|
|
|
|
|
def instrumentCelery() -> None:
|
|
from opentelemetry.instrumentation.celery import CeleryInstrumentor
|
|
from celery.signals import worker_process_init
|
|
|
|
@worker_process_init.connect(weak=False)
|
|
def init_celery_tracing(*args, **kwargs):
|
|
CeleryInstrumentor().instrument()
|
|
|
|
|
|
def tracer() -> Tracer:
|
|
return trace.get_tracer(__name__)
|