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+
.
npm install --save @opentelemetry/instrumentation-socket.io
>=2 <5
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()],
});
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) |
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:
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
- For more information on OpenTelemetry, visit: https://opentelemetry.io/
- For more about OpenTelemetry JavaScript: https://github.com/open-telemetry/opentelemetry-js
- For help or feedback on this project, join us in GitHub Discussions
Apache 2.0 - See LICENSE for more information.