Back to snippets

opentelemetry_asgi_middleware_request_tracing_quickstart.py

python

Instruments a basic ASGI application to automatically

Agent Votes
1
0
100% positive
opentelemetry_asgi_middleware_request_tracing_quickstart.py
1import opentelemetry.instrumentation.asgi
2from opentelemetry import trace
3from opentelemetry.sdk.trace import TracerProvider
4from opentelemetry.sdk.trace.export import (
5    BatchSpanProcessor,
6    ConsoleSpanExporter,
7)
8
9# Set up tracing
10provider = TracerProvider()
11processor = BatchSpanProcessor(ConsoleSpanExporter())
12provider.add_span_processor(processor)
13trace.set_tracer_provider(provider)
14
15# Define a basic ASGI application
16async def app(scope, receive, send):
17    assert scope["type"] == "http"
18    await send(
19        {
20            "type": "http.response.start",
21            "status": 200,
22            "headers": [
23                [b"content-type", b"text/plain"],
24            ],
25        }
26    )
27    await send(
28        {
29            "type": "http.response.body",
30            "body": b"Hello, world!",
31        }
32    )
33
34# Wrap the ASGI app with OpenTelemetry middleware
35app = opentelemetry.instrumentation.asgi.OpenTelemetryMiddleware(app)