# What this PR does This PR set up tracing to propagates trace_id to log lines. There are two different tracers: local one in manage.py - it's used when app is started via manage.py runserver. In this case spans will be just written in console. Second traces is confugured in wsgi.py. It will be used when app is runned via uwsgi and it will export traces via grpc. Feature is hidden behind the feature flag.
27 lines
1.1 KiB
Python
Executable file
27 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
import os
|
|
import sys
|
|
|
|
from django.conf import settings
|
|
from opentelemetry import trace
|
|
from opentelemetry.instrumentation.logging import LoggingInstrumentor
|
|
from opentelemetry.sdk.trace import TracerProvider
|
|
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor
|
|
|
|
if __name__ == "__main__":
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.dev")
|
|
if settings.OTEL_TRACING_ENABLED:
|
|
# Set up tracing and logging instrumentation under manage.ru runserver command.
|
|
trace.set_tracer_provider(TracerProvider())
|
|
span_processor = SimpleSpanProcessor(ConsoleSpanExporter())
|
|
trace.get_tracer_provider().add_span_processor(span_processor)
|
|
LoggingInstrumentor().instrument()
|
|
try:
|
|
from django.core.management import execute_from_command_line
|
|
except ImportError as exc:
|
|
raise ImportError(
|
|
"Couldn't import Django. Are you sure it's installed and "
|
|
"available on your PYTHONPATH environment variable? Did you "
|
|
"forget to activate a virtual environment?"
|
|
) from exc
|
|
execute_from_command_line(sys.argv)
|