I setup otel traces in my django app, by overriding Gunicorn's post_fork:
import os
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.http.trace_exporter import \
OTLPSpanExporter
from opentelemetry.instrumentation.django import DjangoInstrumentor
from opentelemetry.instrumentation.logging import LoggingInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
def post_fork(server, worker):
"""Configue OpenTelemetry traces."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'solutions.settings')
resource = Resource.create(attributes={
"service.name": "solutions"
})
trace.set_tracer_provider(TracerProvider(resource=resource))
span_processor = BatchSpanProcessor(
OTLPSpanExporter(endpoint="http://grafana-agent-traces.prometheus:4318/v1/traces")
)
trace.get_tracer_provider().add_span_processor(span_processor)
DjangoInstrumentor().instrument()
LoggingInstrumentor().instrument(set_logging_format=True)
Traces are successfully exported but are also printed to console. How to avoid that?
I have tried to add this, but it has no effect:
logging.getLogger("opentelemetry").setLevel(logging.WARNING)