Docs » Instrument applications for Splunk APM

Instrument applications for Splunk 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 Overview of SignalFx Microservices APM Previous Generation (µAPM PG).

Monitor your application performance by exporting spans from your application code to Splunk APM. Splunk provides libraries to automatically instrument applications, but APM is instrumentation-agnostic, and supports many popular instrumentation libraries for custom instrumentation, including OpenTelemetry, Jaeger, and Zipkin.

As long as you send spans to APM in a format it recognizes, it doesn’t matter how you instrumented your code. For more information about supported span formats, see Compatible span formats for Splunk APM.

To see how you can configure instrumentation with sample applications Splunk provides, see Learn how to instrument an application with examples.

Splunk provides libraries for these languages to automatically instrument applications:

Language Library
Java, Scala, Kotlin Splunk Distribution of OpenTelemetry Java Instrumentation
Python Splunk Distribution of OpenTelemetry Python
Node.js SignalFx Tracing Library for JavaScript
.NET SignalFx Tracing Library for .NET
Go SignalFx Go tracing library
Ruby SignalFx Tracing Library for Ruby
PHP SignalFx Tracing Library for PHP

You can also instrument AWS Lambda functions with these languages using SignalFx Lambda wrappers or instrumentation libraries:

For more information, see Export spans from an AWS Lambda function.

To export spans from a service mesh, see Export spans from a service mesh.

To monitor an inferred service, see Export spans from an inferred service.

Note

Don’t use automatic instrumentation or instrumentation agents from multiple vendors at the same time.

Manually instrument code to export spans and metadata an instrumentation library doesn’t automatically capture, or for more selective control about what you send to APM.

You can manually instrument code with an instrumentation library to leverage the existing API and tracer the library deployed and configured. You can also manually configure the API, deploy a tracer, and set up an exporter to send spans and metadata to APM.

When available, use OpenTelemetry to manually instrument code. For resources on manual instrumentation with OpenTelemetry, including example instrumentation and sample applications, see the OpenTelemetry project on GitHub. If you’re extending the instrumentation of a SignalFx tracing library, which uses the OpenTracing API, continue using the OpenTracing API instead.