Learn about Wavefront SDKs that enable applications to report metrics, histograms, and trace data.

Wavefront supports a suite of open source SDKs that developers can use to instrument applications for observability. The instrumented application collects and sends metrics, histograms, and/or trace data to Wavefront for storage and visualization. The SDKs are available for most popular programming languages, and are available in GitHub.

Watch this video to listen to our co-founder Clement Pang talk about how Wavefront expands application monitoring with its observability SDKs:

application monitoring

What Do You Want to Collect?

Wavefront observability SDKs let you instrument your application to collect and send different kinds of observability data. For the most gain with the least amount of work:

  • Start with Wavefront SDKs for instrumenting frameworks, if your application uses any of the supported frameworks.
  • Introduce other Wavefront SDKs to augment areas of your code that are not be handled by a supported framework.
SDK TypeSDK Description Supported Languages
OpenTracing SDK Implements the OpenTracing specification. Lets you define, collect, and report custom trace data from any part of your application code.
Automatically derives RED metrics from the reported spans.
Metrics SDK Implements a standard metrics library. Lets you define, collect, and report custom business metrics and histograms from any part of your application code.
Sender SDK Lets you send raw values to Wavefront for storage as metrics, histograms, or traces, e.g., to import CSV data into Wavefront.

SDKs For Collecting Trace Data

Wavefront provides SDKs that implement the OpenTracing specification for creating, sampling, and reporting spans and traces. You use these SDKs to instrument critical areas in your code to send custom trace data to Wavefront:

  • You can use a Wavefront OpenTracing SDK alone, to instrument an entire application.
  • You can use a Wavefront OpenTracing SDK along with a framework SDK, to instrument any functions that are not handled by the instrumented framework.

Wavefront provides OpenTracing SDKs for:

A Wavefront OpenTracing SDK derives RED metrics from the spans that are sent from the instrumented application. These RED metrics show the request Rate, Errors, and Duration that are obtained from the reported spans. These out-of-the-box metrics are derived from your spans automatically, with no additional configuration or instrumentation on your part. You can view the RED metrics for each service’s operations in predefined charts.

Sample use cases:

  • Suppose your application is already instrumented with a 3rd party distributed tracing system. If that 3rd party system is OpenTracing-compliant, you can replace it with the Wavefront OpenTracing SDK in the same language.

  • Suppose you have a microservice with a critical backend operation that writes to a proprietary database. Even though you’ve used a framework-specific SDK to instrument the RESTful APIs of the microservice, you’d like to see if anything is holding up the database write operation. You can use an OpenTracing SDK to instrument the operation so that it adds spans to the microservice’s traces.

SDKs For Collecting Metrics and Histograms

Wavefront provides SDKs that implement standard metrics libraries in popular programming languages. You use these SDKs to instrument critical areas in your code, to collect and send custom business metrics and histograms to Wavefront:

  • You can use a metrics SDK alone, to instrument an entire application to report the metrics of your choice.
  • You can use a metrics SDK and a framework SDK to instrument any functions that are not handled by the instrumented framework.

Wavefront provides metrics SDKs for Java, .Net/C#, and Python:

Different metrics SDKs provide different capabilities:

  • Some SDKs let you instrument functions with (cumulative) counters, delta counters, meters, gauges, timers, and histograms. These SDKs require some code changes beyond setting up helper objects. In particular, you’ll need to instantiate objects for each type of metric you want to collect, and modify each function of interest.
  • Some SDKs automatically collect and report metrics and histograms from your application’s runtime system. The specific metrics depend on the programming language.

Sample use case:

  • Suppose you have a microservice with a critical backend operation that writes to a proprietary database. Even though you’ve used a framework-specific SDK to instrument the RESTful APIs, you’d also like to track how many database writes are performed. You can use a metrics SDK to instrument the write operation with a counter.

SDKs for Sending Raw Data to Wavefront

Some Wavefront SDKs enable you to send raw values to Wavefront for ingestion as metrics, histograms, or trace data. You normally use these “sender” SDKs indirectly when you use other Wavefront SDKs that depend on them. However, you might use a sender SDK directly, for example, to create a utility that obtains existing values from a data store or CSV file, and sends those values to Wavefront.

Wavefront provides sender SDKs for:

A sender SDK is built into each of the other observability SDKs to enable applications to communicate with Wavefront in one of two ways:

  • Send data directly to the Wavefront service (direct ingestion). This technique gets you up and running with minimal preparation, but is best suited for small-scale uses.
  • Send data to a Wavefront proxy, which then forwards the data to the Wavefront service. This technique is recommended for large-scale deployments, because the proxy provides resilience to internet outages, control over data queuing and filtering, and more.