Skip to content

Instantly share code, notes, and snippets.

@akiross
Created June 15, 2022 18:51
Show Gist options
  • Save akiross/22d7ebe7f4936408efa6f306cc73b95c to your computer and use it in GitHub Desktop.
Save akiross/22d7ebe7f4936408efa6f306cc73b95c to your computer and use it in GitHub Desktop.
Opentelemetry with Django
receivers:
otlp:
protocols:
grpc:
processors:
# Did not test without this batch, yet. Might be unnecessary.
batch:
exporters:
otlp:
endpoint: "api.honeycomb.io:443"
headers:
"x-honeycomb-team": "MY KEY"
logging:
loglevel: warn
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp, logging]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [otlp, logging]
logs:
receivers: [otlp]
processors: [batch]
exporters: [otlp, logging]
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
from opentelemetry.instrumentation.django import DjangoInstrumentor
def main():
"""Run administrative tasks."""
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
DjangoInstrumentor().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)
if __name__ == "__main__":
main()
opentelemetry-api = "==1.11.1"
opentelemetry-sdk = "==1.11.1"
opentelemetry-exporter-otlp = "==1.11.1"
opentelemetry-instrumentation-django = { extras = ["asgi"], version = "==0.30b1" }
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
# Use otel collector agent, with grpc and insecure connection
# I couldn't make it work without this BatchSpanProcessor
span_exporter = BatchSpanProcessor(
OTLPSpanExporter(
endpoint="otel:4317",
insecure=True,
)
)
tracer_provider = TracerProvider()
trace.set_tracer_provider(tracer_provider)
tracer_provider.add_span_processor(span_exporter)
...
@akiross
Copy link
Author

akiross commented Jun 15, 2022

Using this collector container image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.51.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment