OpenTelemetry Collector Exporter for web and node

This module provides exporter for web and node to be used with opentelemetry-collector - last tested with version 0.25.0.
Installation
npm install --save @opentelemetry/exporter-collector
Service Name
The OpenTelemetry Collector Exporter does not have a service name configuration.
In order to set the service name, use the service.name
resource attribute as prescribed in the OpenTelemetry Resource Semantic Conventions.
Traces in Web
The CollectorTraceExporter in Web expects the endpoint to end in /v1/traces
.
import { BatchSpanProcessor } from '@opentelemetry/tracing';
import { WebTracerProvider } from '@opentelemetry/web';
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
const collectorOptions = {
url: '<opentelemetry-collector-url>',
headers: {},
concurrencyLimit: 10,
};
const provider = new WebTracerProvider();
const exporter = new CollectorTraceExporter(collectorOptions);
provider.addSpanProcessor(new BatchSpanProcessor(exporter, {
maxQueueSize: 100,
maxExportBatchSize: 10,
scheduledDelayMillis: 500,
exportTimeoutMillis: 30000,
}));
provider.register();
Metrics in Web
The CollectorMetricExporter in Web expects the endpoint to end in /v1/metrics
.
import { MeterProvider } from '@opentelemetry/metrics';
import { CollectorMetricExporter } from '@opentelemetry/exporter-collector';
const collectorOptions = {
url: '<opentelemetry-collector-url>',
headers: {},
concurrencyLimit: 1,
};
const exporter = new CollectorMetricExporter(collectorOptions);
const meter = new MeterProvider({
exporter,
interval: 60000,
}).getMeter('example-meter');
const counter = meter.createCounter('metric_name');
counter.add(10, { 'key': 'value' });
Traces in Node - JSON over http
const { BasicTracerProvider, BatchSpanProcessor } = require('@opentelemetry/tracing');
const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector');
const collectorOptions = {
url: '<opentelemetry-collector-url>',
headers: {
foo: 'bar'
},
concurrencyLimit: 10,
};
const provider = new BasicTracerProvider();
const exporter = new CollectorTraceExporter(collectorOptions);
provider.addSpanProcessor(new BatchSpanProcessor(exporter, {
maxQueueSize: 1000,
scheduledDelayMillis: 30000,
}));
provider.register();
Metrics in Node
const { MeterProvider } = require('@opentelemetry/metrics');
const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector');
const collectorOptions = {
url: '<opentelemetry-collector-url>',
concurrencyLimit: 1,
};
const exporter = new CollectorMetricExporter(collectorOptions);
const meter = new MeterProvider({
exporter,
interval: 60000,
}).getMeter('example-meter');
const counter = meter.createCounter('metric_name');
counter.add(10, { 'key': 'value' });
GRPC
For GRPC please check npm-url-grpc
PROTOBUF
For PROTOBUF please check npm-url-proto
Running opentelemetry-collector locally to see the traces
- Go to examples/collector-exporter-node
- run
npm run docker:start
- Open page at
http://localhost:9411/zipkin/
to observe the traces
Useful links
License
Apache 2.0 - See LICENSE for more information.