Python Integration
Instrument Python applications with OpenTelemetry
Overview
Instrument your Python applications to send traces, metrics, and logs to Qorrelate using OpenTelemetry. Supports automatic instrumentation for Flask, Django, and FastAPI.
Installation
pip install opentelemetry-api \
opentelemetry-sdk \
opentelemetry-exporter-otlp \
opentelemetry-instrumentationAuto-Instrumentation (Recommended)
# Install auto-instrumentation packages
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
# Run your app with auto-instrumentation
OTEL_EXPORTER_OTLP_ENDPOINT="https://qorrelate.io" \
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer YOUR_API_KEY,X-Organization-Id=YOUR_ORG_ID" \
OTEL_SERVICE_NAME="my-python-app" \
opentelemetry-instrument python app.pyManual 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
provider = TracerProvider()
exporter = OTLPSpanExporter(
endpoint="https://qorrelate.io/v1/traces",
headers={"Authorization": "Bearer YOUR_API_KEY", "X-Organization-Id": "YOUR_ORG_ID"}
)
provider.add_span_processor(BatchSpanProcessor(exporter))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(__name__)
@tracer.start_as_current_span("my-operation")
def my_function():
# Your code here
passLogging Integration
from opentelemetry._logs import set_logger_provider
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
import logging
logger_provider = LoggerProvider()
log_exporter = OTLPLogExporter(
endpoint="https://qorrelate.io/v1/logs",
headers={"Authorization": "Bearer YOUR_API_KEY", "X-Organization-Id": "YOUR_ORG_ID"}
)
logger_provider.add_log_record_processor(BatchLogRecordProcessor(log_exporter))
set_logger_provider(logger_provider)
handler = LoggingHandler(logger_provider=logger_provider)
logging.getLogger().addHandler(handler)
logging.info("Application started")Flask
pip install opentelemetry-instrumentation-flask
from flask import Flask
from opentelemetry.instrumentation.flask import FlaskInstrumentor
app = Flask(__name__)
FlaskInstrumentor().instrument_app(app)Django
pip install opentelemetry-instrumentation-django
# In manage.py
from opentelemetry.instrumentation.django import DjangoInstrumentor
DjangoInstrumentor().instrument()FastAPI
pip install opentelemetry-instrumentation-fastapi
from fastapi import FastAPI
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
app = FastAPI()
FastAPIInstrumentor.instrument_app(app)💡 Pro Tip
Use the Qorrelate CLI for zero-code instrumentation: qorrelate run python app.py
