Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@opentelemetry/exporter-jaeger
Advanced tools
OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger
@opentelemetry/exporter-jaeger is an npm package that allows you to export OpenTelemetry traces to Jaeger, a popular open-source distributed tracing system. This package is part of the OpenTelemetry project, which provides a set of APIs, libraries, agents, and instrumentation to enable observability for cloud-native software.
Exporting Traces to Jaeger
This code sample demonstrates how to set up the Jaeger exporter with OpenTelemetry in a Node.js application. It configures the exporter to send traces to a Jaeger instance running locally and starts a simple trace.
const { NodeTracerProvider } = require('@opentelemetry/node');
const { SimpleSpanProcessor } = require('@opentelemetry/tracing');
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
const provider = new NodeTracerProvider();
const exporter = new JaegerExporter({
serviceName: 'my-service',
endpoint: 'http://localhost:14268/api/traces',
});
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
provider.register();
// Now you can start tracing your application
const tracer = provider.getTracer('example-tracer');
const span = tracer.startSpan('example-span');
span.end();
Configuring Exporter Options
This code sample shows how to configure additional options for the Jaeger exporter, such as setting custom tags and specifying the maximum packet size.
const exporter = new JaegerExporter({
serviceName: 'my-service',
endpoint: 'http://localhost:14268/api/traces',
tags: [], // Optional: Add custom tags
maxPacketSize: 65000, // Optional: Set max packet size
});
@opentelemetry/exporter-zipkin is another exporter for OpenTelemetry that sends traces to Zipkin, another popular distributed tracing system. It is similar to @opentelemetry/exporter-jaeger but targets Zipkin instead of Jaeger.
jaeger-client is a Jaeger client library for Node.js that provides similar functionality to @opentelemetry/exporter-jaeger but is not part of the OpenTelemetry project. It offers more direct integration with Jaeger but lacks the broader ecosystem support of OpenTelemetry.
opentracing-javascript is the official OpenTracing library for JavaScript. While it provides a more general API for distributed tracing, it requires additional setup to export traces to Jaeger, unlike @opentelemetry/exporter-jaeger, which is specifically designed for this purpose.
NOTE: Support for @opentelemetry/exporter-jaeger
will end March 2024, please use any of the following packages instead:
@opentelemetry/exporter-trace-otlp-proto
@opentelemetry/exporter-trace-otlp-grpc
@opentelemetry/exporter-trace-otlp-http
NOTE: Bundling (with e.g. webpack
, rollup
, esbuild
, ...) is not supported by this package. Please use @opentelemetry/exporter-trace-otlp-proto
instead.
OpenTelemetry Jaeger Trace Exporter allows the user to send collected traces to Jaeger.
Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing system released as open source by Uber Technologies. It is used for monitoring and troubleshooting microservices-based distributed systems, including:
This project relies on jaeger-client library and is thus only supported for Node.js.
Get up and running with Jaeger in your local environment.
Jaeger stores and queries traces exported by applications instrumented with OpenTelemetry. The easiest way to start a Jaeger server is to paste the below:
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 9411:9411 \
jaegertracing/all-in-one:latest
Or run the jaeger-all-in-one(.exe)
executable from the binary distribution archives:
jaeger-all-in-one --collector.zipkin.http-port=9411
You can then navigate to http://localhost:16686 to access the Jaeger UI.
npm install --save @opentelemetry/exporter-jaeger
Install the exporter on your application and pass the options, it must contain a service name.
Furthermore, the host
option (which defaults to localhost
), can instead be set by the
OTEL_EXPORTER_JAEGER_AGENT_HOST
environment variable to reduce in-code config. If both are
set, the value set by the option in code is authoritative.
import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
const options = {
tags: [], // optional
// You can use the default UDPSender
host: 'localhost', // optional
port: 6832, // optional
// OR you can use the HTTPSender as follows
// endpoint: 'http://localhost:14268/api/traces',
maxPacketSize: 65000 // optional
}
const exporter = new JaegerExporter(options);
Now, register the exporter.
const tracerProvider = new NodeTracerProvider({
spanProcessors: [new BatchSpanProcessor(exporter)]
})
const tracer = traceProvider.getTracer('my-tracer')
You can use built-in SimpleSpanProcessor
or BatchSpanProcessor
or write your own.
SpanProcessor
that passes ended span directly to the configured SpanExporter
.SpanProcessor
that batches ended spans and pushes them to the configured SpanExporter
. It is recommended to use this SpanProcessor
for better performance and optimization.Apache 2.0 - See LICENSE for more information.
1.30.0
FAQs
OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger
The npm package @opentelemetry/exporter-jaeger receives a total of 379,082 weekly downloads. As such, @opentelemetry/exporter-jaeger popularity was classified as popular.
We found that @opentelemetry/exporter-jaeger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.