Skip to content

Python SDK

Instrument your Python applications to send traces and logs to Kopai.

Terminal window
pip install opentelemetry-api opentelemetry-sdk \
opentelemetry-exporter-otlp-proto-http \
opentelemetry-instrumentation
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
import os
# Configure the tracer
provider = TracerProvider()
processor = BatchSpanProcessor(
OTLPSpanExporter(
endpoint="https://otlp.kopai.app/v1/traces",
headers={"Authorization": f"Bearer {os.environ['KOPAI_TOKEN']}"},
)
)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
Terminal window
export KOPAI_TOKEN="your-token-here"
export OTEL_SERVICE_NAME="my-service"
python app.py

Install instrumentation packages for your framework:

Terminal window
# Flask
pip install opentelemetry-instrumentation-flask
# Django
pip install opentelemetry-instrumentation-django
# FastAPI
pip install opentelemetry-instrumentation-fastapi

Then instrument:

from opentelemetry.instrumentation.flask import FlaskInstrumentor
app = Flask(__name__)
FlaskInstrumentor().instrument_app(app)
from opentelemetry import trace
tracer = trace.get_tracer("my-service")
def process_order(order_id: str):
with tracer.start_as_current_span("processOrder") as span:
span.set_attribute("order.id", order_id)
# Your logic here
return result