Docs » Instrument applications for SignalFx µAPM » Send traces from a Python application to SignalFx µAPM

Send traces from a Python application to SignalFx µAPM 🔗

Important

The original µAPM product, released in 2019, is now called µAPM Previous Generation (µAPM PG). In the documentation, µAPM now refers to the product released on March 31, 2020.

If you are using µAPM Previous Generation (µAPM PG), see µAPM PG Instrumentation Guide.

Important

The SignalFx Python Tracing Library is deprecated. Only critical security fixes and bugs will be provided.

Use the Splunk Distribution of OpenTelemetry Python, which offers the same capabilities and fully supports the OpenTelemetry standard.

Automatically instrument a Python application to capture and send traces to SignalFx with the Splunk Distribution of OpenTelemetry Python. The Splunk Distribution of OpenTelemetry Python uses OpenTelemetry to instrument a Python application. To set up instrumentation, see the Splunk Distribution of OpenTelemetry Python on GitHub.

The Splunk Distribution of OpenTelemetry Python dynamically injects span start/finish calls into specific, commonly used Python classes. It’s a distribution of the OpenTelemetry Instrumentation for Python that provides B3 context propagation, a Zipkin exporter, and configuration options for full-fidelity traces that SignalFx uses. The end result is similar to manually placing the same span start/finish calls directly in the code, with some slight overhead upon application startup to do the class bytecode alterations.

Configure the Splunk Distribution of OpenTelemetry Python to send traces to a Smart Agent. The Smart Agent forwards data to a µAPM ingest endpoint in SignalFx. Configure the Smart Agent to add tags to identify spans that belong to specific hosts or microservices. If you want to configure instrumentation for an application and can’t deploy a Smart Agent, you can use the Splunk Distribution of OpenTelemetry Python to send traces directly to an OpenTelemetry Collector or µAPM ingest endpoint in SignalFx instead. For more information about deploying a Smart Agent, see Deploy a SignalFx Smart Agent for µAPM.

Optionally, deploy an OpenTelemetry Collector between a Smart Agent or instrumented code and the µAPM ingest endpoint. The OpenTelemetry Collector supports protocols the Smart Agent doesn’t support and allows for larger retry buffers to prevent packet loss. For more information about deploying an OpenTelemetry Collector for µAPM, see Deploy an OpenTelemetry Collector for SignalFx µAPM.

To manually instrument an application, see the OpenTelemetry Instrumentation for Python on GitHub.