
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
@opentelemetry/instrumentation-kafkajs
Advanced tools
OpenTelemetry instrumentation for `kafkajs` messaging client for Apache Kafka
kafkajs Instrumentation for Node.jsThis module provides automatic instrumentation for the kafkajs package, which may be loaded using the @opentelemetry/sdk-trace-node package and is included in the @opentelemetry/auto-instrumentations-node bundle.
If total installation size is not constrained, it is recommended to use the @opentelemetry/auto-instrumentations-node bundle with @opentelemetry/sdk-node for the most seamless instrumentation experience.
Compatible with OpenTelemetry JS API and SDK 1.0+.
npm install --save @opentelemetry/instrumentation-kafkajs
kafkajs versions >=0.3.0 <3const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const {
KafkaJsInstrumentation,
} = require('@opentelemetry/instrumentation-kafkajs');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const provider = new NodeTracerProvider();
provider.register();
registerInstrumentations({
instrumentations: [
new KafkaJsInstrumentation({
// see below for available configuration
}),
],
});
You can set the following:
| Options | Type | Description |
|---|---|---|
producerHook | KafkaProducerCustomAttributeFunction | Function called before a producer message is sent. Allows for adding custom attributes to the span. |
consumerHook | KafkaConsumerCustomAttributeFunction | Function called before a consumer message is processed. Allows for adding custom attributes to the span. |
This package uses @opentelemetry/semantic-conventions version 1.30+, which implements Semantic Convention Version 1.30.0
| KafkaJS Object | Action | Span Kind | Span Name | Operation Type / Name |
|---|---|---|---|---|
| Consumer | eachBatch | Client | poll <topic-name> | receive / poll |
| Consumer | eachBatch, eachMessage | Consumer | process <topic-name> [1] | process / process |
| Producer | send | Producer | send <topic-name> | send / send |
[1] process <topic-name>: In the context of eachBatch, this span will be emitted for each message in the batch but the timing (start, end, duration) will reflect the timing of the batch.
| KafkaJS Object | Metric Name | Short Description |
|---|---|---|
| Consumer | messaging.process.duration | Duration of processing operation. [1] |
| Consumer | messaging.client.consumed.messages | Number of messages that were delivered to the application. |
| Consumer and Producer | messaging.client.operation.duration | Number of messages that were delivered to the application. (Only emitted for kafkajs@1.5.0 and later.) |
| Producer | messaging.client.sent.messages | Number of messages producer attempted to send to the broker. |
[1] messaging.process.duration: In the context of eachBatch, this metric will be emitted once for each message but the value reflects the duration of the entire batch.
These attributes are added to both spans and metrics, where possible.
| Attribute | Short Description |
|---|---|
messaging.system | An identifier for the messaging system being used (i.e. "kafka"). |
messaging.destination.name | The message destination name. |
messaging.operation.type | A string identifying the type of messaging operation. |
messaging.operation.name | The system-specific name of the messaging operation. |
messaging.operation.name | The system-specific name of the messaging operation. |
messaging.kafka.message.key | A stringified value representing the key of the Kafka message (if present). |
messaging.kafka.message.tombstone | A boolean that is true if the message is a tombstone. |
messaging.kafka.offset | The offset of a record in the corresponding Kafka partition. |
messaging.destination.partition.id | The identifier of the partition messages are sent to or received from, unique within the messaging.destination.name. Note: only available on producer spans. |
Apache 2.0 - See LICENSE for more information.
This package provides OpenTelemetry instrumentation for HTTP clients and servers. It automatically captures and reports telemetry data for HTTP requests and responses. Compared to @opentelemetry/instrumentation-kafkajs, it focuses on HTTP rather than KafkaJS.
This package offers OpenTelemetry instrumentation for Express.js applications. It captures and reports telemetry data for Express routes and middleware. While @opentelemetry/instrumentation-kafkajs is specific to KafkaJS, this package is tailored for Express.js.
This package provides OpenTelemetry instrumentation for GraphQL servers. It captures and reports telemetry data for GraphQL queries and mutations. Unlike @opentelemetry/instrumentation-kafkajs, which is for KafkaJS, this package is designed for GraphQL.
FAQs
OpenTelemetry instrumentation for `kafkajs` messaging client for Apache Kafka
The npm package @opentelemetry/instrumentation-kafkajs receives a total of 6,365,246 weekly downloads. As such, @opentelemetry/instrumentation-kafkajs popularity was classified as popular.
We found that @opentelemetry/instrumentation-kafkajs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 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.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.

Product
Bringing supply chain security to the next generation of JavaScript package managers