hemera-jaeger
v6.0.2
Published
This is a plugin to use the Jaeger Opentracing tracer with Hemera
Downloads
16,671
Readme
Hemera-jaeger package
This is a plugin to use Jaeger tracer with Hemera.
https://eng.uber.com/distributed-tracing/
Usage
hemera.use(hemeraJaeger, {
// See schema https://github.com/jaegertracing/jaeger-client-node/blob/master/src/configuration.js#L37
config: {
serviceName: 'math',
sampler: {
type: 'const',
param: 1
},
reporter: {
logSpans: true
}
},
// See options https://github.com/jaegertracing/jaeger-client-node/blob/master/src/configuration.js#L192
options: {
logger: {
info: function logInfo(msg) {
console.log('INFO ', msg)
},
error: function logError(msg) {
console.log('ERROR', msg)
}
}
}
})
Getting started
Run the Jaeger tracer
$ docker run -d -e -p5775:5775/udp -p6831:6831/udp -p6832:6832/udp -p5778:5778 -p16686:16686 -p14268:14268 -p9411:9411 jaegertracing/all-in-one:latest
You can then navigate to http://localhost:16686 to access the Jaeger UI.
Build parent context manually
const tracer = hemera.jaeger.tracer
// trace parent request
const span = tracer.startSpan('http_request')
// enrich the span with metadata
span.setTag(KEY, VALUE)
// set the parent span on the context to pass it to all calls
hemera.context$.opentracing = span
// send it to jaeger
span.finish()
hemera.act({
topic: 'math',
cmd: 'add'
})
Build parent context with HTTP headers format
const tracer = hemera.jaeger.tracer
/**
* {
* 'x-b3-traceid': '123abc',
* 'x-b3-spanid': '456def',
* 'x-b3-parentspanid': 'zzzzz',
* 'x-b3-sampled': '1',
* 'x-b3-flags': '1'
* }
**/
// trace parent request
const span = tracer.extract(FORMAT_HTTP_HEADERS, req.headers)
// set the parent span on the context to pass it to all calls
hemera.context$.opentracing = span
// send it to jaeger
span.finish()
hemera.act({
topic: 'math',
cmd: 'add'
})
Plugin decorators
- .jaeger
Represent an object with following properties
- tracer: The jaeger tracer instance
Caveats
- The jaeger tracer generates it's own tracing data.
- This plugin transfers the tracing context in
trace$.opentracing
property.