Skip to content

Python

Run this in your app’s environment, after your app’s own packages are installed. The second line adds instrumentation for the libraries it finds, such as Flask, Django, FastAPI, requests and psycopg.

Terminal window
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install

Set these where your app runs. Replace YOUR_INGEST_KEY with your key and checkout with your service name.

Terminal window
export OTEL_SERVICE_NAME=checkout
export OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production
export OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.siteqwality.com
export OTEL_EXPORTER_OTLP_HEADERS=Authorization=YOUR_INGEST_KEY
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true

Put opentelemetry-instrument in front of the command that starts your app, for example:

Terminal window
opentelemetry-instrument flask --app app run --host 0.0.0.0 --port 8080

Requests to your app and the calls it makes are now traced automatically.

logger = logging.getLogger("checkout")
logger.setLevel(logging.INFO)
logger.info("order placed", extra={"order_id": 42})

Records from the standard logging module arrive as logs, linked to the trace of the request that wrote them. Records below the logger’s level are not sent, so set it to the lowest level you want to keep.

orders = metrics.get_meter("checkout").create_counter("orders.placed")
orders.add(1)

Open Logs, Traces or Metrics. New data usually shows up within a minute, and a page that says it is waiting for data switches to your data on its own.

The code on this page comes from a runnable example that is checked against our ingest rules every month.

Nothing arriving? Check that the key is an ingest key for this account, that your account has early access, and the status codes in Ingest routes and limits.