Changelog¶
All notable changes to the Kafka Connect OpenTelemetry Source Connector will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
Planned Features¶
- TLS support for OTLP receivers (gRPC and HTTP)
- Custom authentication mechanisms (API keys, mTLS)
- Configurable message transformations (SMTs)
- Metrics dashboard templates (Grafana)
- Helm chart for Kubernetes deployments
- Resource attribute filtering
- Sampling configuration (head-based, tail-based)
1.0.0 - 2025-12-17¶
Added¶
Core Features¶
- Initial release of Kafka Connect OpenTelemetry Source Connector
- OTLP receiver for traces, metrics, and logs
- Dual protocol support: gRPC (port 4317) and HTTP (port 4318)
- Automatic signal type routing to separate Kafka topics
- Flexible output formats: JSON and Protobuf (base64-encoded)
- Configurable message queues with backpressure handling (per signal type)
- Sequence-based offset management for reliable delivery
- Graceful shutdown with in-flight message completion
OTLP Protocol Support¶
- gRPC receiver on port 4317 (configurable)
opentelemetry.proto.collector.trace.v1.TraceServiceopentelemetry.proto.collector.metrics.v1.MetricsServiceopentelemetry.proto.collector.logs.v1.LogsService- HTTP receiver on port 4318 (configurable)
/v1/tracesendpoint/v1/metricsendpoint/v1/logsendpoint- Support for all OpenTelemetry SDKs (Java, Python, Go, Node.js, .NET, Ruby, etc.)
- Automatic gzip compression support (gRPC and HTTP)
Configuration¶
- Required parameters:
connector.class- Connector class nametasks.max- Number of tasks (must be 1)- OTLP receiver configuration:
otlp.grpc.enabled- Enable/disable gRPC receiver (default: true)otlp.grpc.port- gRPC port (default: 4317)otlp.http.enabled- Enable/disable HTTP receiver (default: true)otlp.http.port- HTTP port (default: 4318)otlp.bind.address- Bind address (default: 0.0.0.0)- Kafka topic configuration:
kafka.topic.traces- Traces topic (default: otlp-traces)kafka.topic.metrics- Metrics topic (default: otlp-metrics)kafka.topic.logs- Logs topic (default: otlp-logs)- Message format configuration:
otlp.message.format- Output format: json or protobuf (default: json)otlp.message.queue.size- Queue size per signal (default: 10000)
Monitoring & Observability¶
- JMX metrics exposure via Kafka Connect framework
- Built-in metrics:
- Counters: TracesReceived, MetricsReceived, LogsReceived, TracesDropped, MetricsDropped, LogsDropped, RecordsProduced
- Queue Metrics: TracesQueueSize, MetricsQueueSize, LogsQueueSize, QueueCapacity, MaxQueueUtilizationPercent
- Derived Metrics: TotalMessagesReceived, TotalMessagesDropped, TotalLagCount, DropRate
- Structured logging with
event=prefix: event=task_starting- Task initializationevent=otlp_receiver_started- OTLP receivers startedevent=trace_received,event=metric_received,event=log_received- Signal receptionevent=trace_dropped,event=metric_dropped,event=log_dropped- Queue overflowevent=task_metrics- Periodic metrics log (every 30 seconds)event=task_stopping- Graceful shutdown- Integration with Prometheus via JMX Exporter
- Sample Grafana dashboard configuration
Documentation¶
- Comprehensive README with installation, configuration, and usage examples
- Quick start guide with OpenTelemetry SDK examples (Java, Python, Go)
- Detailed configuration reference with all parameters
- Troubleshooting guide with common issues and solutions
- OpenTelemetry SDK integration examples for multiple languages
- Architecture documentation with data flow diagrams
- Production deployment recommendations
- Operational runbook for monitoring and troubleshooting
- FAQ covering common questions and use cases
Testing¶
- Unit tests for connector, configuration, and offset management
- Integration tests with gRPC and HTTP receivers
- Configuration validation tests
- Offset commit and recovery tests
- Queue overflow and backpressure tests
Dependencies¶
- Apache Kafka Connect API 3.9.0
- gRPC 1.59.0
- Protobuf 3.25.0
- OpenTelemetry Protocol definitions 1.0.0
- SLF4J logging API 1.7.36
- JUnit 5.9.2 (testing)
- Mockito 5.2.0 (testing)
Technical Details¶
Architecture¶
- OpenTelemetrySourceConnector: Main connector class managing configuration and task lifecycle
- OpenTelemetrySourceTask: Task implementation running OTLP receivers and message polling
- OtlpGrpcReceiver: gRPC server implementing OTLP trace/metrics/logs services
- OtlpHttpReceiver: HTTP server handling /v1/traces, /v1/metrics, /v1/logs endpoints
- SignalRouter: Routes incoming signals to appropriate queues (traces/metrics/logs)
- OffsetManager: Manages sequence-based offsets for each signal type
- OpenTelemetrySourceConnectorConfig: Configuration definition with validation
Data Flow¶
OpenTelemetry Apps
|
| OTLP/gRPC (4317)
| OTLP/HTTP (4318)
v
OTLP Receivers (gRPC + HTTP)
|
v
Signal Router
|
+---+---+---+
| | | |
v v v v
Traces Metrics Logs Queues
| | | |
v v v v
SourceTask.poll()
|
v
Kafka Topics (otlp-traces, otlp-metrics, otlp-logs)
Message Format¶
JSON Format (Default): - Human-readable JSON using protobuf JSON mapping - Larger size (~3-5x protobuf) - Easier debugging and downstream processing
Protobuf Format: - Base64-encoded binary protobuf - Smaller size, faster serialization - Requires protobuf decoder downstream
Delivery Semantics¶
- At-least-once delivery with offset management
- Sequence numbers for each signal type
- Offsets committed to Kafka Connect offset storage
- Messages may be duplicated on failure/restart
- Messages can be dropped on queue overflow (monitor JMX metrics)
Known Limitations¶
- Single task per connector (OTLP receiver runs on specific ports)
- No built-in TLS support (planned for future release)
- No custom authentication (planned for future release)
- Queue overflow drops messages (monitor queue utilization)
- gRPC and HTTP ports must be available
Known Issues¶
- None reported in initial release
Breaking Changes¶
N/A - Initial release
Version History Format¶
[X.Y.Z] - YYYY-MM-DD¶
Added¶
Features or capabilities that were added in this release.
Changed¶
Changes in existing functionality or behavior.
Deprecated¶
Features that will be removed in future releases.
Removed¶
Features that were removed in this release.
Fixed¶
Bug fixes and error corrections.
Security¶
Security vulnerability fixes and improvements.
Upgrade Guide¶
From Pre-Release to 1.0.0¶
This is the initial stable release. No migration required.
Future Upgrades¶
Upgrade instructions will be provided here for future releases.
Support Policy¶
Version Support¶
- Latest stable version: Full support with bug fixes and security updates
- Previous minor version: Security fixes only
- Older versions: Community support via GitHub Issues
Compatibility Matrix¶
| Connector Version | Min Kafka Version | Max Kafka Version | Java Version | OTLP Version |
|---|---|---|---|---|
| 1.0.0 | 3.9.0 | Latest | 11+ | 1.0.0 |
Release Notes Archive¶
Release Highlights¶
1.0.0 - Initial Stable Release (2025-12-17)¶
🎉 First Production-Ready Release
The Kafka Connect OpenTelemetry Source Connector is now production-ready with comprehensive features for receiving OTLP telemetry and streaming it into Apache Kafka.
Key Capabilities: - Receive traces, metrics, and logs from any OpenTelemetry-instrumented application - Support for both gRPC (4317) and HTTP (4318) OTLP protocols - Automatic routing to separate Kafka topics per signal type - Flexible JSON or Protobuf output formats - Configurable queues with backpressure handling
Production Features: - Sequence-based offset management for reliable delivery - Built-in JMX metrics for monitoring - Comprehensive error handling and logging - Prometheus/Grafana integration support - Graceful shutdown with in-flight message completion
Use Cases: - Build observability pipelines with Kafka - Buffer telemetry before sending to backends - Fan-out telemetry to multiple consumers - Long-term trace/metrics/logs storage - Decouple apps from specific observability backends
Getting Started:
mvn clean package
cp target/kafka-connect-opentelemetry-1.0.0-jar-with-dependencies.jar \
$KAFKA_HOME/plugins/kafka-connect-opentelemetry/
Example Configuration:
{
"name": "otlp-source",
"config": {
"connector.class": "io.conduktor.connect.otel.OpenTelemetrySourceConnector",
"tasks.max": "1",
"otlp.grpc.port": "4317",
"otlp.http.port": "4318",
"kafka.topic.traces": "otlp-traces",
"kafka.topic.metrics": "otlp-metrics",
"kafka.topic.logs": "otlp-logs",
"otlp.message.format": "json"
}
}
Important Notes: - At-least-once delivery semantics (sequence-based offsets) - Single task per connector (port binding limitation) - Monitor queue utilization to prevent message drops - TLS support planned for future release
Contributing to Changelog¶
When submitting a PR, please update the [Unreleased] section with your changes under the appropriate category (Added, Changed, Fixed, etc.).
Format:
Example:
### Added
- TLS support for OTLP receivers ([#42](https://github.com/conduktor/kafka-connect-opentelemetry/pull/42))
### Fixed
- Memory leak in queue overflow scenario ([#38](https://github.com/conduktor/kafka-connect-opentelemetry/pull/38))