# zipkin-instrumentation-express

> Express middleware for instrumentation with Zipkin.js

Latest version **0.22.0** (published 2020-06-04) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install zipkin-instrumentation-express
pnpm add zipkin-instrumentation-express
yarn add zipkin-instrumentation-express
bun add zipkin-instrumentation-express
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.22.0 |
| Published | 2020-06-04 |
| First published | 2016-05-11 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 35.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 568 |
| Author | OpenZipkin |
| Maintainers | openzipkin |

## Links

- npm: https://www.npmjs.com/package/zipkin-instrumentation-express
- Repository: https://github.com/openzipkin/zipkin-js
- Homepage: https://github.com/openzipkin/zipkin-js#readme
- Issues: https://github.com/openzipkin/zipkin-js/issues
- npm.io page: https://npm.io/package/zipkin-instrumentation-express

## Dependencies (1)

- [zipkin](https://npm.io/package/zipkin.md) ^0.22.0

## Recent versions

- 0.22.0 (latest) — 2020-06-04
- 0.22.1-alpha.6 (canary) — 2021-03-01
- 0.22.1-alpha.3 — 2020-11-03
- 0.21.1-alpha.2 — 2020-05-25
- 0.21.0 — 2020-04-16
- 0.20.0 — 2020-03-25
- 0.19.2 — 2020-02-06
- 0.19.2-alpha.6 — 2020-02-06
- 0.19.2-alpha.3 — 2020-01-30
- 0.19.2-alpha.1 — 2019-10-25
- 0.19.1 — 2019-10-16
- 0.20.0-alpha.1 — 2019-08-09
- 0.20.0-alpha.0 — 2019-08-09
- 0.19.0 — 2019-08-07
- 0.18.6 — 2019-07-24
- … 49 more at https://npm.io/package/zipkin-instrumentation-express/versions

## README

# zipkin-instrumentation-express

![npm](https://img.shields.io/npm/dm/zipkin-instrumentation-express.svg)

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

## Express Middleware

```javascript
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](https://www.npmjs.com/package/express-http-proxy) to add headers and record traces.

```javascript
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`.
```javascript
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'));
```

---
_Source: https://npm.io/package/zipkin-instrumentation-express · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
