Skip to content

fix(kafkajs): add APM tracing support for batch consumer#6937

Closed
slukes wants to merge 2 commits intoDataDog:masterfrom
slukes:fix/kafka-batch-consumer-tracing
Closed

fix(kafkajs): add APM tracing support for batch consumer#6937
slukes wants to merge 2 commits intoDataDog:masterfrom
slukes:fix/kafka-batch-consumer-tracing

Conversation

@slukes
Copy link
Copy Markdown
Contributor

@slukes slukes commented Nov 17, 2025

The batch consumer plugin was only handling Data Streams Monitoring (DSM) but not creating APM trace spans. This adds the missing bindStart() method to create spans for eachBatch callbacks, similar to how the regular consumer plugin creates spans for eachMessage callbacks.

Changes:

  • Add bindStart() method to create APM trace spans for batch consumption
  • Extract parent context from first message headers for distributed tracing
  • Add span tags: kafka.topic, kafka.partition, kafka.batch_size
  • Add kafka.first_offset and kafka.last_offset tags for batch boundaries
  • Set span resource to topic name and type to 'worker'
  • Integrate DSM checkpoints with APM spans (pass span to setCheckpoint)
  • Add comprehensive test coverage for batch consumer APM tracing

This fix ensures that batch consumer operations are properly traced in APM, providing visibility into batch consumption performance and enabling distributed tracing across Kafka producers and consumers.

Fixes missing APM spans for @confluentinc/kafka-javascript and kafkajs batch consumers when using eachBatch callbacks.

What does this PR do?

Motivation

Plugin Checklist

Additional Notes

The batch consumer plugin was only handling Data Streams Monitoring
(DSM) but not creating APM trace spans. This adds the missing bindStart()
method to create spans for eachBatch callbacks, similar to how the
regular consumer plugin creates spans for eachMessage callbacks.

Changes:
- Add bindStart() method to create APM trace spans for batch consumption
- Extract parent context from first message headers for distributed tracing
- Add span tags: kafka.topic, kafka.partition, kafka.batch_size
- Add kafka.first_offset and kafka.last_offset tags for batch boundaries
- Set span resource to topic name and type to 'worker'
- Integrate DSM checkpoints with APM spans (pass span to setCheckpoint)
- Add comprehensive test coverage for batch consumer APM tracing

This fix ensures that batch consumer operations are properly traced
in APM, providing visibility into batch consumption performance and
enabling distributed tracing across Kafka producers and consumers.

Fixes missing APM spans for @confluentinc/kafka-javascript and kafkajs
batch consumers when using eachBatch callbacks.
@slukes slukes requested review from a team as code owners November 17, 2025 21:50
@BridgeAR
Copy link
Copy Markdown
Member

BridgeAR commented Apr 9, 2026

@slukes thank you very much for the PR! We ported this over and landed this now, so it will be included in the next release.

@BridgeAR BridgeAR closed this Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants