Out of the box distributed tracing for Node.js applications.
WARNING: experimental library, do not use in production yet
This library is a higher level wrapper around opentracing-auto, that you should consider to use instead of this library.
Requirements
- Node.js, >= v8
- Jaeger
npm install shimo-jaeger
// must be in the first two lines of your application
const Tracer = require('shimo-jaeger')
const tracer = new Tracer({
serviceName: 'my-server-2',
options: {
enables: ['koa', 'express', 'http']
}
})
// rest of your code
const express = require('express')
// ...
To start Jaeger and visit it's dashboard:
docker run -d -p5775:5775/udp -p6831:6831/udp -p6832:6832/udp -p5778:5778 -p16686:16686 -p14268:14268 jaegertracing/all-in-one:latest && open http://localhost:16686
The example require a running MongoDB.
npm run example
curl http://localhost:3000
open http://localhost:16686
Create a new Tracer and instrument modules.
args.serviceName
: Name of your service- required
- example:
'my-service-1'
args.sampler
: Jaeger sampler, see sampler docs- optional
- default:
new jaeger.RateLimitingSampler(1)
args.reporter
: Jaeger reporter, see reporter docs- optional
- default:
new jaeger.RemoteReporter(new UDPSender())
args.options
: Jaeger options, see docs- optional
- example:
{ tags: { gitHash: 'foobar', sender: { host: '192.168.1.x' }, enables: ['http', 'koa', 'express'] } }
Check out opentracing-auto instrumentations.
Read more about it in the Client Libraries documentation.