OpenTelemetry socket.io Instrumentation for Node.js
This module provides automatic instrumentation for the socket.io
module, 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+
.
Installation
npm install --save @opentelemetry/instrumentation-socket.io
Supported Versions
Usage
To load a specific plugin, specify it in the registerInstrumentations's configuration:
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const {
SocketIoInstrumentation,
} = require("@opentelemetry/instrumentation-socket.io");
const { registerInstrumentations } = require("@opentelemetry/instrumentation");
const provider = new NodeTracerProvider();
provider.register();
registerInstrumentations({
instrumentations: [new SocketIoInstrumentation()],
});
Optional Parameters
Option | Type | Default | Description |
---|
emitHook | SocketIoHookFunction | undefined | hook for adding custom attributes before socket.io emits the event |
emitIgnoreEventList | string[] | [] | names of emitted events to ignore tracing for |
onHook | SocketIoHookFunction | undefined | hook for adding custom attributes before the event listener (callback) is invoked |
onIgnoreEventList | string[] | [] | names of listened events to ignore tracing for |
traceReserved | boolean | false | set to true if you want to trace socket.io reserved events (see docs) |
Migration From opentelemetry-instrumentation-socket.io
This instrumentation was originally published and maintained under the name "opentelemetry-instrumentation-socket.io"
in this repo.
Few breaking changes were made during porting to the contrib repo:
filterHttpTransport
The instrumentation's config filterHttpTransport
option was removed to decouple this instrumentation from the http instrumentation.
if you do not want to trace the socket.io http requests, add the default socket.io route (/socket.io/
) to the HttpInstrumentationConfig.ignoreIncomingPaths
array
Useful links
License
Apache 2.0 - See LICENSE for more information.