zipkin-instrumentation-express
    TypeScript icon, indicating that this package has built-in type declarations

    0.22.0 • Public • Published

    zipkin-instrumentation-express

    npm

    Express middleware and instrumentation that adds Zipkin tracing to the application.

    Express Middleware

    const express = require('express');
    const {Tracer, ExplicitContext, ConsoleRecorder} = require('zipkin');
    const zipkinMiddleware = require('zipkin-instrumentation-express').expressMiddleware;
     
    const ctxImpl = new ExplicitContext();
    const recorder = new ConsoleRecorder();
    const localServiceName = 'service-a'; // name of this application
    const tracer = new Tracer({ctxImpl, recorder, localServiceName});
     
    const app = express();
     
    // Add the Zipkin middleware
    app.use(zipkinMiddleware({tracer}));

    Express HTTP Proxy

    This library will wrap express-http-proxy to add headers and record traces.

    const {ConsoleRecorder, Tracer, ExplicitContext} = require('zipkin');
    const {wrapExpressHttpProxy} = require('zipkin-instrumentation-express');
    const proxy = require('express-http-proxy');
     
    const ctxImpl = new ExplicitContext();
    const recorder = new ConsoleRecorder();
    const tracer = new Tracer({ctxImpl, localServiceName: 'weather-app', recorder});
    const remoteServiceName = 'weather-api';
     
    const zipkinProxy = wrapExpressHttpProxy(proxy, {tracer, remoteServiceName});
     
    app.use('/api/weather', zipkinProxy('http://api.weather.com', {
      decorateRequest: (proxyReq, originalReq) => proxyReq.method = 'POST' // You can use express-http-proxy options as usual
    }));

    This can also be combined with Zipkin Express Middleware. Note the use of zipkin-context-cls.

    const {ConsoleRecorder, Tracer} = require('zipkin');
    const {expressMiddleware, wrapExpressHttpProxy} = require('zipkin-instrumentation-express')
    const CLSContext = require('zipkin-context-cls');
    const proxy = require('express-http-proxy');
     
    const ctxImpl = new CLSContext();
    const recorder = new ConsoleRecorder();
    const tracer = new Tracer({ctxImpl, localServiceName: 'weather-app', recorder});
    const remoteServiceName = 'weather-api';
     
    const zipkinProxy = wrapExpressHttpProxy(proxy, {tracer, remoteServiceName});
     
    app.use('/api/weather', expressMiddleware({tracer}), zipkinProxy('http://api.weather.com'));

    Keywords

    none

    Install

    npm i zipkin-instrumentation-express

    DownloadsWeekly Downloads

    13,771

    Version

    0.22.0

    License

    Apache-2.0

    Unpacked Size

    36.2 kB

    Total Files

    15

    Last publish

    Collaborators

    • openzipkin