Socket
Socket
Sign inDemoInstall

zipkin-transport-http

Package Overview
Dependencies
10
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    zipkin-transport-http

Transports Zipkin trace data via HTTP


Version published
Maintainers
1
Install size
535 kB
Created

Readme

Source

zipkin-transport-http

npm

This is a module that sends Zipkin trace data to a configurable HTTP endpoint.

Usage

npm install zipkin-transport-http --save

const {
  Tracer,
  BatchRecorder,
  jsonEncoder: {JSON_V2}
} = require('zipkin');
const {HttpLogger} = require('zipkin-transport-http');
const noop = require('noop-logger');

const recorder = new BatchRecorder({
  logger: new HttpLogger({
    endpoint: 'http://localhost:9411/api/v2/spans', // Required
    jsonEncoder: JSON_V2, // JSON encoder to use. Optional (defaults to JSON_V1)
    httpInterval: 1000, // How often to sync spans. Optional (defaults to 1000)
    headers: {'Authorization': 'secret'}, // Custom HTTP headers. Optional
    timeout: 1000, // Timeout for HTTP Post. Optional (defaults to 0)
    maxPayloadSize: 0, // Max payload size for zipkin span. Optional (defaults to 0)
    agent: new http.Agent({keepAlive: true}), // Agent used for network related options. Optional (defaults to null)
    log: noop, // Logger to use. Optional (defaults to console)
    fetchImplementation: require('node-fetch') // Pluggable fetch implementation (defaults to global fetch or fallsback to node fetch)
  })
});

const tracer = new Tracer({
  recorder,
  ctxImpl, // this would typically be a CLSContext or ExplicitContext
  localServiceName: 'service-a' // name of this application
});

Options

Required

  • endpoint - HTTP endpoint which spans will be sent.

Optional

  • agent - HTTP(S) agent to use for any networking related options.
    • Takes an http/https NodeJS Agent.
    • Defaults to null
// Example using a self-signed CA, along with cert/key for mTLS.
new HttpLogger({
  endpoint: 'http://localhost:9411/api/v2/spans',
  agent: new http.Agent({
    ca: fs.readFileSync('pathToCaCert'),
    cert: fs.readFileSync('pathToCert'),
    key: fs.readFileSync('pathToPrivateKey')
  })
})
  • headers - Any additional HTTP headers to be sent with span.
    • Will set 'Content-Type': 'application/json' at a minimum
  • httpInterval - How often to sync spans.
    • Defaults to 1000
  • jsonEncoder - JSON encoder to use when sending spans.
    • Defaults to JSON_V1
  • maxPayloadSize - Max payload size for zipkin span.
    • Will drop any spans exceeding this threshold.
    • Defaults to 0 (Disabled)
  • log - Internal logger used within the transport.
    • Defaults to console
  • timeout - Timeout for HTTP Post when sending spans.
    • Defaults to 0 (Disabled)
  • fetchImplementation - The fetch API to be used for sending spans.
    • Defaults to default global fetch or fallsback to node-fetch.

    • A different fetch implementation can be plugged to fulfill different requirements, for example one can use fetch-retry to allow retries and exponential back-off:

      const {HttpLogger} = require('zipkin-transport-http');
      const fetch = require('node-fetch');
      const fetchRetryBuilder = require('fetch-retry');
      
      const fetchRetryOptions = {
        // retry on any network error, or > 408 or 5xx status codes
        retryOn: (attempt, error, response) => error !== null
          || response == null
          || response.status >= 408,
        retryDelay: tryIndex => 1000 ** tryIndex // with an exponentially growing backoff
      };
      
      const fetchImplementation = fetchRetryBuilder(fetch, fetchRetryOptions);
      
      const httpLogger = new HttpLogger({
        endpoint: `http://localhost:9411/api/v1/spans`,
        httpInterval: 1,
        fetchImplementation
      });
      

FAQs

Last updated on 04 Jun 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc