feat(otel-nestjs-instrumentation): add RPC messaging spans and metrics - #13
Merged
Conversation
Instrument Nest microservice handlers with messaging semantic conventions and messaging.process.duration for SQS, Kafka, and RabbitMQ transports, without affecting HTTP handlers or duplicating http.server.duration. Co-authored-by: Cursor <cursoragent@cursor.com>
context.getType() returns string; only assign when it is http or rpc so nest build passes strict TypeScript checking in CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared consumer metadata and span-attribute helpers, and resolve RPC messaging metadata once per span to satisfy Sonar duplication limits. Co-authored-by: Cursor <cursoragent@cursor.com>
…ests Reuse toMessagingSpanAttributes for metrics recording, consolidate carrier extraction, and table-drive transport metadata tests to satisfy Sonar. Co-authored-by: Cursor <cursoragent@cursor.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
messaging.system,messaging.destination.name,messaging.operation, etc.) for SQS, Kafka, and RabbitMQ transports via duck-typed context inspection.messaging.process.durationhistogram on RPC completion, gated so HTTP handlers and genericnestjsfallback paths do not emit messaging metrics or duplicatehttp.server.duration.getType() === 'rpc', propagate trace context from message headers/MessageAttributes, and set CONSUMER span kind for queue-based transports.Test plan
pnpm --filter otel-nestjs-instrumentation test— 121 tests passturbo build+lint:stagedpassotel-nestjs-instrumentationin consuming apps (e.g.base-nestjs-app/super-push) and remove transport-specific messaging wrappersmessaging.process.durationon SQS/Kafka consumers in homologationMade with Cursor