Socket
Socket
Sign inDemoInstall

@opentelemetry/exporter-otlp-grpc

Package Overview
Dependencies
7
Maintainers
4
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/exporter-otlp-grpc


Version published
Maintainers
4
Install size
11.7 MB
Created

Changelog

Source

0.26.0

:boom: Breaking Change

  • opentelemetry-exporter-collector-grpc, opentelemetry-exporter-otlp-grpc, opentelemetry-exporter-otlp-http, opentelemetry-exporter-otlp-proto
    • #2476 chore!: rename collector exporters (@dyladan)
  • opentelemetry-core, opentelemetry-instrumentation-grpc, opentelemetry-sdk-trace-base, opentelemetry-shim-opentracing

:rocket: (Enhancement)

  • opentelemetry-core, opentelemetry-sdk-trace-base
  • opentelemetry-instrumentation
    • #2450 fix: handle missing package.json file when checking for version (@nozik)
  • opentelemetry-semantic-conventions
    • #2456 feat: upgrade semantic conventions to the latest 1.6.1 version (@weyert)
  • opentelemetry-exporter-collector-proto, opentelemetry-exporter-collector
    • #2438 feat: OTEL_EXPORTER_OTLP_ENDPOINT append version and signal (@longility)

:bug: (Bug Fix)

  • Other
  • opentelemetry-instrumentation-fetch
  • opentelemetry-sdk-trace-base
    • #2434 fix: ReferenceError when OTEL_TRACES_SAMPLER used without OTEL_TRACES_SAMPLER_ARG (@hermanbanken)

:books: (Refine Doc)

:house: (Internal)

  • opentelemetry-exporter-otlp-http
  • opentelemetry-sdk-node
  • Other
  • opentelemetry-context-zone, opentelemetry-core, opentelemetry-exporter-collector-grpc, opentelemetry-exporter-collector-proto, opentelemetry-exporter-collector, opentelemetry-exporter-prometheus, opentelemetry-exporter-zipkin, opentelemetry-instrumentation-fetch, opentelemetry-instrumentation-grpc, opentelemetry-instrumentation-http, opentelemetry-instrumentation-xml-http-request, opentelemetry-propagator-b3, opentelemetry-propagator-jaeger, opentelemetry-resources, opentelemetry-sdk-metrics-base, opentelemetry-sdk-node, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-web
    • #2462 chore: split stable and experimental packages into groups using directories (@dyladan)
  • opentelemetry-instrumentation-http
  • opentelemetry-instrumentation-fetch
  • opentelemetry-exporter-collector
  • opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-node
  • opentelemetry-exporter-prometheus, opentelemetry-exporter-zipkin, opentelemetry-shim-opentracing

Committers: 18

Readme

Source

OpenTelemetry Collector Exporter for node with grpc

NPM Published Version dependencies devDependencies Apache License

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-otlp-grpc

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 Node - GRPC

The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with /v1/traces.

const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } =  require('@opentelemetry/exporter-otlp-grpc');

const collectorOptions = {
  // url is optional and can be omitted - default is grpc://localhost:4317
  url: 'grpc://<collector-hostname>:<port>',
};

const provider = new BasicTracerProvider();
const exporter = new OTLPTraceExporter(collectorOptions);
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));

provider.register();
['SIGINT', 'SIGTERM'].forEach(signal => {
  process.on(signal, () => provider.shutdown().catch(console.error));
});

By default, plaintext connection is used. In order to use TLS in Node.js, provide credentials option like so:

const fs = require('fs');
const grpc = require('@grpc/grpc-js');

const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } =  require('@opentelemetry/exporter-otlp-grpc');

const collectorOptions = {
  // url is optional and can be omitted - default is grpc://localhost:4317
  url: 'grpc://<collector-hostname>:<port>',
  credentials: grpc.credentials.createSsl(),
};

const provider = new BasicTracerProvider();
const exporter = new OTLPTraceExporter(collectorOptions);
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));

provider.register();
['SIGINT', 'SIGTERM'].forEach(signal => {
  process.on(signal, () => provider.shutdown().catch(console.error));
});

To use mutual authentication, pass to the createSsl() constructor:

  credentials: grpc.credentials.createSsl(
    fs.readFileSync('./ca.crt'),
    fs.readFileSync('./client.key'),
    fs.readFileSync('./client.crt')
  ),

To generate credentials for mutual authentication, you can refer to the script used to generate certificates for tests here

The exporter can be configured to send custom metadata with each request as in the example below:

const grpc = require('@grpc/grpc-js');

const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } =  require('@opentelemetry/exporter-otlp-grpc');

const metadata = new grpc.Metadata();
// For instance, an API key or access token might go here.
metadata.set('k', 'v');

const collectorOptions = {
  // url is optional and can be omitted - default is grpc://localhost:4317
  url: 'grpc://<collector-hostname>:<port>',
  metadata, // // an optional grpc.Metadata object to be sent with each request
};

const provider = new BasicTracerProvider();
const exporter = new OTLPTraceExporter(collectorOptions);
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));

provider.register();
['SIGINT', 'SIGTERM'].forEach(signal => {
  process.on(signal, () => provider.shutdown().catch(console.error));
});

Note, that this will only work if TLS is also configured on the server.

Metrics in Node - GRPC

The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with /v1/metrics. All options that work with trace also work with metrics.

const { MeterProvider } = require('@opentelemetry/sdk-metrics-base');
const { OTLPMetricExporter } =  require('@opentelemetry/exporter-otlp-grpc');
const collectorOptions = {
  // url is optional and can be omitted - default is grpc://localhost:4317
  url: 'grpc://<collector-hostname>:<port>',
};
const exporter = new OTLPMetricExporter(collectorOptions);

// Register the exporter
const provider = new MeterProvider({
  exporter,
  interval: 60000,
})
['SIGINT', 'SIGTERM'].forEach(signal => {
  process.on(signal, () => provider.shutdown().catch(console.error));
});

// Now, start recording data
const meter = provider.getMeter('example-meter');
const counter = meter.createCounter('metric_name');
counter.add(10, { 'key': 'value' });

Running opentelemetry-collector locally to see the traces

  1. Go to examples/otlp-exporter-node
  2. run npm run docker:start
  3. Open page at http://localhost:9411/zipkin/ to observe the traces

License

Apache 2.0 - See LICENSE for more information.

Keywords

FAQs

Last updated on 05 Oct 2021

Did you know?

Socket

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc