Git Product home page Git Product logo

tracing-examples's Introduction

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 SignalFx with various open source tracers. They are broken down by language/platform.

Java

Python

Go

  • Jaeger Go: our recommended tracer for Golang.
  • OpenCensus Go: OpenCensus's instrumentation library with a Jaeger reporter in Golang.

Node.js

  • Jaeger Node.js
  • Zipkin JS Tracer: Zipkin's instrumentation library for Javascript (currently supports a broader range of instrumentations than the Jaeger Node tracer and supports running in a browser).

Ruby

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.

AWS Lambda Functions

  • AWS Lambda: Examples for instrumenting spans for AWS Lambda written in Java, Python, Node, Go

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:

tracing-examples's People

Contributors

mpetazzoni avatar mohitmehta avatar achandras avatar rmfitzpatrick avatar keitwb avatar sm7x avatar seonsfx avatar mdubbyap avatar brandoncurrie avatar asuresh4 avatar harnitsignalfx avatar slernersplunk avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.