6.0.0 • Published 21 days ago

@map-colonies/telemetry v6.0.0

Weekly downloads
66
License
ISC
Repository
github
Last release
21 days ago

Telemetry

Motive

This package goal is to make the experience of configuring and working with OpenTelemetry easier.

example

Below are short examples for tracing and metrics. More examples are available at the examples folder, and the various opentelemetry repos.

Tracing

The following code shows a simple example of how to work with tracing. please notice that you need to manually install any auto-instrumentation library that you require.

import { Tracing } from '@map-colonies/telemetry';
import { trace } from '@opentelemetry/api';

const tracing = new Tracing();

tracing.start();

const tracer = trace.getTracer('tracing-name')

const span = tracer.startSpan('some-action');

span.setAttribute('some-attribute');

// DO STUFF

span.end();

tracing.stop().then(() => console.log('done'));

Another way for initialize tracing with custom resource:

import { Tracing } from '@map-colonies/telemetry';
import { Resource } from '@opentelemetry/resources';

const resource = new Resource({ 'service.version': number, 'service.name': 'my-service-name' });

const tracing = new Tracing([], resource);
...

Metrics

The following code shows a simple example of how to work with metrics.

import { Metrics } from '@map-colonies/telemetry';

const metrics = new Metrics('sample-meter');

const meter = metrics.start();

const counter = meter.createCounter('sample_counter');

counter.add(1);

metrics.stop().then(() => console.log('done'));

Semantic Conventions

The package's Semantic Conventions submodule defines a common set of (semantic) attributes which provide meaning to data when collecting, producing and consuming it.

Based on the official OpenTelemetry conventions

Link to full documentation

Configuration

Common configuration

nameallowed valuedefault valuedescription
TELEMETRY_SERVICE_NAMEstringfrom package.jsonThe service name
TELEMETRY_SERVICE_VERSIONstringfrom package.jsonThe service version
TELEMETRY_HOST_NAMEstringos.hostname()The host name

Tracing configuration

nameallowed valuedefault valuedescription
TELEMETRY_TRACING_ENABLED'true', 'false''false'Should Tracing be enabled
TELEMETRY_TRACING_URL*stringhttp://localhost:4318/v1/tracesThe URL to the OpenTelemetry Collector
TELEMETRY_TRACING_RATIOfloat1The amount of traces to sample

* required (only when tracing is enabled).

Metric configuration

nameallowed valuedefault valuedescription
TELEMETRY_METRICS_ENABLED'true', 'false''false'Should Metrics be enabled
TELEMETRY_METRICS_URL*stringhttp://localhost:4318/v1/metricsThe URL to the OpenTelemetry Collector
TELEMETRY_METRICS_INTERVALnumber15000The interval in miliseconds between sending data to the collector

* required (only when tracing is enabled).

How to release

Run the command npm run release -- to bump the version in all the files and create a changelog.

For more detailed documentation and examples check: https://github.com/conventional-changelog/standard-version