Awesome Open Source
Awesome Open Source

  SignalFx was acquired by Splunk in October 2019. See Splunk SignalFx for more information.

SignalFx Distributed Tracing Instrumentation

Instrumentation Agnostic

SignalFx Distributed Tracing intends to be instrumentation agnostic; supporting & ingesting variety of popular open instrumentation libraries including OpenTracing, Zipkin & OpenCensus. So long as the tracer configured to send spans to SignalFx ingest endpoint uses the Zipkin v1/2 JSON wire format or Jaeger Thrift format, we will accept spans irrespective of how they were instrumented - via one of the above mentioned open libraries or a homegrown one. Our goal is to build on the shoulders of giant communities rather than re-invent the wheel with proprietary libraries/agents and give customers choice to decide what works for them without worrying about vendor lock-in.

OpenTracing    Jaeger Tracing    ZipKin    OpenCensus

For customers who have not yet instrumented their code, our default recommendation is to use OpenTracing to instrument since it has a growing ecosystem of library owners & frameworks instrumenting their code with it & use Jaeger tracer libraries to export spans to us - both of these are CNCF projects with a rapidly growing community behind them.

How should I go about instrumenting my application for distributed tracing?

RPC layer(s) and service/web framework(s) are the best places to start when thinking about how to go about instrumentating your application - both of these will likely have a large coverage area and touch a significant number of transaction paths to give you baseline tracing coverage and visualize an end-to-end trace with a service-map.

Next you should identify services critical to your business and look for areas not covered by rpc or service/web frameworks. Within these services, identify high value transactions and critical paths - instrument enough of these.

Examples

This repository contains a set of simple example applications that demonstrate using OpenTelemetry or SignalFx with various open source tracers. They are broken down by language/platform.

.NET

Java

Python

Go

Service Meshes

  • Istio
    • Istio Mixer Adapter: We have an out of process adapter available for Istio. This is an example configuration for that adapter.
    • Istio E-Commerce Application: An example application with Istio tracing using the SignalFx adapter and Envoy tracing.
  • Envoy: the Envoy proxy can be configured to report trace spans to SignalFx.
  • AWS App Mesh: An example E-Commerce application with deployment and configuration files for App Mesh on ECS.

Auto-Instrumentation

For customers who have not instrumented their applications, or have done so in an OpenTracing-compatible fashion, we offer several SignalFx Tracing libraries. Their detailed documentation is available in their respective source locations:

Examples of those auto-instrumentation techniques are available in this repository:

Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,161,998
Python (894,645
Java (413,361
Php (298,628
Golang (172,741
Documentation (22,285
Tracing (3,609
Instrumentation (1,834
Istio (1,068
Zipkin (984
Opentracing (711
Distributed Tracing (341
Jaegertracing (63
Signalfx (18