Install the package using
npm install --save opentracing
The package contains an example using a naive
MockTracer implementation. To run the example:
npm run example
The output should look something like:
Spans: parent_span - 1521ms tag 'custom':'tag value' tag 'alpha':'1000' child_span - 503ms tag 'alpha':'200' tag 'beta':'50'
const http = ;const opentracing = ;// NOTE: the default OpenTracing tracer does not record any tracing information.// Replace this line with the tracer implementation of your choice.const tracer = ;const span = tracer;const opts =host : 'example.com'method: 'GET'port : '80'path: '/';http;
As noted in the source snippet, the default behavior of the
opentracing package is to act as a "no op" implementation. To capture and make the tracing data actionable, the
tracer object should be initialized with the OpenTracing implementation of your choice as in the pseudo-code below:
const CustomTracer = ;const tracer = ;
Usage in the browser
The package contains two bundles built with webpack that can be included using a standard
<script> tag. The library will be exposed under the global
dist/opentracing-browser.min.js- minified, no runtime checks
dist/opentracing-browser.js- debug version with runtime checks
Usage with TypeScript
Since the source is written in TypeScript, if you are using TypeScript, you can just
npm install the package and it will work out of the box.
This is especially useful for implementors who want to type check their implementation with the base interface.
The library also provides a global singleton tracer for convenience. This can be set and accessed via the following:
opentracing;const tracer = opentracing;
globalTracer() returns a wrapper on the actual tracer object. This is done for the convenience of use as it ensures that the function will always return a non-null object. This can be helpful in cases where it is difficult or impossible to know precisely when
initGlobalTracer is called (for example, when writing a utility library that does not control the initialization process). For more precise control, individual
Tracer objects can be used instead of the global tracer.
There is a hosted copy of the current generated ESDoc API Documentation here.
Contributing & developer information
See the OpenTracing website for general information on contributing to OpenTracing.
The project is written in TypeScript and built using a npm scripts. Run:
npm run watchincrementally compiles on file changes
npm run webpackcreates the bundles for the browser in
npm testruns the tests
npm run typedocgenerates the documentation in
OpenTracing tracer implementations
This section is intended for developers wishing to implement their own tracers. Developers who simply wish to use OpenTracing can safely ignore this information.
Custom tracer implementation
Implementations can subclass
opentracing.Span, and the other API classes to build an OpenTracing tracer and implement the underscore prefixed methods such as
_addTag to pick up a bit of common code implemented in the base classes.
API compatibility testing
mocha is being used for unit testing,
test/api_compatibility can be used to test the custom tracer. The file exports a single function that expects as an argument a function that will return a new instance of the tracer.
const apiCompatibilityChecks = default;;
Apache License 2.0
A minimal example tracer is provided in the
src/mock_tracer directory of the source code.