Skip to content

Distributed Tracing

Jon Park edited this page Aug 7, 2018 · 14 revisions

Distributed Tracing

Distributed tracing support in a Mashling instance is achieved via two pieces:

  1. The tracer embedded within the Gorilla Mux HTTP trigger.
  2. The tracing activity that can be added to Flogo flows to log tracing events when the context is correctly propagated.
  3. Native tracing support baked into the REST activity in Mashling.

The tracing implementation is powered by the Golang OpenTracing library here: github.com/opentracing/opentracing-go

Out of the box the HTTP trigger can be configured to support the following distributed tracing solutions:

  1. Zipkin
  2. AppDash
  3. Lightstep

Trigger

The following tracing specific configuration options are available for the Gorilla Mux HTTP trigger:

| tracer | The tracer to use: noop, zipkin, appdash, or lightstep | | tracerEndpoint | The url or address of the tracer (ZipKin, APPDash) | | tracerToken | The token for tracing access (LightStep) |

tracerDebug

Debug mode for the tracer (ZipKin)

tracerSameSpan

Put client side and server side annotations in same span (ZipKin)

tracerID128Bit

Use 128 bit ids (ZipKin)

The tracing related output of the trigger (that allows a user to propagate context for instance) is:

tracing

Tracing context

More details on the trigger can be found here: https://github.com/TIBCOSoftware/mashling/tree/master/ext/flogo/trigger/gorillamuxtrigger

Tracing Activity

A new tracing activity has been added. It can be used in any Flogo flow but does require the tracing context to be propagated in order to correctly send the tracing details to the tracing server.

Key inputs and outputs are:

Inputs

Key

Description

tracing

The tracing context to span off of

span

The current span to close

Outputs

Key

Description

tracing

The tracing context to forward

span

The current span to forward

More details and up-to-date examples can be found here: https://github.com/TIBCOSoftware/mashling/tree/master/ext/flogo/activity/tracer

REST Activity

Native tracing support has been added to the default REST activity in Mashling as well. This primarily involves auto ingesting and processing the tracing details if the following tracing context is provided to the activity:

tracing

The tracing context to forward

More details and up-to-date examples can be found here: https://github.com/TIBCOSoftware/mashling/tree/master/ext/flogo/activity/rest

Istio Integration

By default, a Mashling that is using the Gorilla Mux HTTP trigger with tracing enabled and pointing to the Istio instance service name for the Zipkin server will consume the Istio generated tracing context headers and pass them along the flow. This enables visibility into the full request flow from the Istio ingress through to your Mashling process.

An example and walkthrough can be found in the Mashling Recipes Github repository under the recipes/istio/mashling-istio-tracing folder (WIP: not yet merged into master).

Document generated by Confluence on Aug 06, 2018 17:26

Atlassian

Clone this wiki locally