Registry / devops / nice-grpc-opentelemetry

nice-grpc-opentelemetry

JSON →
library0.1.22jsnpmunverified

OpenTelemetry instrumentation for nice-grpc. Current stable version 0.1.22, released monthly. It provides automatic tracing of gRPC calls made with nice-grpc, supporting both client and server interceptors. Differentiators: built for nice-grpc's typed gRPC framework, integrates with OpenTelemetry's official JS SDK, and offers minimal overhead with proper span attributes.

npm install nice-grpc-opentelemetry
INSTALL
IMPORT
SIG · NICE-GRPC-OPENTELE
N
nice-grpc-opentelemetry
devopsjavascriptv0.1.22
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

OpenTelemetryClientMiddleware
import { OpenTelemetryClientMiddleware } from 'nice-grpc-opentelemetry'
const { OpenTelemetryClientMiddleware } = require('nice-grpc-opentelemetry')
Package is ESM-only. CommonJS require will fail.
OpenTelemetryServerMiddleware
import { OpenTelemetryServerMiddleware } from 'nice-grpc-opentelemetry'
Export for server-side tracing middleware.
default
import openTelemetryMiddleware from 'nice-grpc-opentelemetry'
const openTelemetryMiddleware = require('nice-grpc-opentelemetry')
Default export is an object with both client and server middleware.

Creates a client with OpenTelemetry tracing middleware for nice-grpc.

import { OpenTelemetryClientMiddleware } from 'nice-grpc-opentelemetry'; import { trace } from '@opentelemetry/api'; import { createChannel, createClientFactory } from 'nice-grpc'; import { YourServiceDefinition } from './proto/your-service'; const tracerProvider = trace.getTracerProvider(); const middleware = OpenTelemetryClientMiddleware(tracerProvider); const channel = createChannel('localhost:8080'); const client = createClientFactory() .use(middleware) .create(YourServiceDefinition, channel); async function main() { const response = await client.yourMethod({}); console.log(response); } main();
Debug
Known issues
breakingIn version 0.1.0, the middleware factory signature changed from (tracerProvider, options) to (tracerProvider). Options are now passed as second argument to the middleware function.
fix
Update code to pass options when calling the middleware, not the factory: const middleware = OpenTelemetryClientMiddleware(tracerProvider); const client = createClient(...) .use(middleware({ recordErrors: true }))
affects: >=0.1.0 <0.1.10
deprecatedThe `startActiveSpan` option is deprecated. Use `spanKind` instead.
fix
Replace `startActiveSpan: true` with `spanKind: 'CLIENT'` in middleware options.
affects: >=0.1.15
gotchaMust have a registered OpenTelemetry SDK (e.g., @opentelemetry/sdk-node) before creating the middleware. Otherwise spans are no-ops and data is lost.
fix
import { NodeSDK } from '@opentelemetry/sdk-node'; const sdk = new NodeSDK(); sdk.start();
affects: >=0.1.0
gotchaMiddleware order matters: nice-grpc-opentelemetry must be added last in the middleware chain to capture all other middleware's work.
fix
Ensure .use(middleware) is called after all other .use() calls.
affects: >=0.1.0
Errors
Common errors & fixes
TypeError: Cannot read properties of undefined (reading 'startSpan')
OpenTelemetry API not initialized or missing tracer provider.
fix
Ensure you have registered an OpenTelemetry SDK (e.g., @opentelemetry/sdk-node) before creating the middleware.
ERR_REQUIRE_ESM
Package is ESM-only, but being required via CommonJS.
fix
Change require() to import() or use dynamic import: const mod = await import('nice-grpc-opentelemetry');
Error: No instrumentations defined for gRPC status codes
The middleware expects @opentelemetry/instrumentation-grpc to be installed and registered.
fix
Install @opentelemetry/instrumentation-grpc and register it: import { GrpcInstrumentation } from '@opentelemetry/instrumentation-grpc'; const sdk = new NodeSDK({ instrumentations: [new GrpcInstrumentation()] });
Upgrade
Version history
0.1.22latest on npm
Audit
Dependencies
@opentelemetry/apirequiredPeer dependency for OpenTelemetry API types and trace provider
nice-grpcrequiredPeer dependency for nice-grpc client/server types
Agent activity
7 hits · last 30 days
node
6
Amazon
1
Resources
nice-grpc-opentelemetry — npm install nice-grpc-opentelemetry · libregistry