Python
<!-- status: ga language: python -->
Python
Send traces from a Python service to Watchtower over OTLP/HTTP with the standard OpenTelemetry SDK. Nothing Watchtower-specific is installed: the SDK reads the standard OTEL_* variables.
Create a project, then an ingestion key (
wti_...) with theingest:tracesscope. The key is shown once.Point the SDK at the gateway and pass the key in the
x-watchtower-keyheader (Authorization: Bearer wti_...works too):
export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.example.com
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_HEADERS=x-watchtower-key=wti_YOUR_KEY
export OTEL_SERVICE_NAME=my-serviceAdd the SDK and run this once. The endpoint above is the gateway's base URL; the SDK appends
/v1/traces.
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-httpfrom opentelemetry import trace
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter())) # reads OTEL_EXPORTER_OTLP_*
trace.set_tracer_provider(provider)
with trace.get_tracer("onboarding").start_as_current_span("hello-watchtower"):
pass
provider.shutdown()Open the project's onboarding screen. It polls
GET /v1/projects/{prj}/onboarding/first-eventand turns green when the first span arrives. Then open the trace in the trace explorer.
Updated