Skip to content

Out of the box distributed tracing for Node.js applications.

License

Notifications You must be signed in to change notification settings

RisingStack/jaeger-node

Repository files navigation

jaeger-node

Build Status

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.

Technologies

Requirements

  • Node.js, >= v8
  • Jaeger

Getting started

npm install @risingstack/jaeger
// must be in the first two lines of your application
const Tracer = require('@risingstack/jaeger')
const tracer = new Tracer({
  serviceName: 'my-server-2'
})

// 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

Example

The example require a running MongoDB.

npm run example
curl http://localhost:3000
open http://localhost:16686

Jaeger Node.js tracing

API

new Tracer(args)

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' } }

Instrumentations

Check out opentracing-auto instrumentations.

EMSGSIZE and UDP buffer limits

Read more about it in the Client Libraries documentation.