OpenTelemetry.Instrumentation.ConfluentKafka
0.1.0-alpha.5
Prefix Reserved
dotnet add package OpenTelemetry.Instrumentation.ConfluentKafka --version 0.1.0-alpha.5
NuGet\Install-Package OpenTelemetry.Instrumentation.ConfluentKafka -Version 0.1.0-alpha.5
<PackageReference Include="OpenTelemetry.Instrumentation.ConfluentKafka" Version="0.1.0-alpha.5" />
<PackageVersion Include="OpenTelemetry.Instrumentation.ConfluentKafka" Version="0.1.0-alpha.5" />
<PackageReference Include="OpenTelemetry.Instrumentation.ConfluentKafka" />
paket add OpenTelemetry.Instrumentation.ConfluentKafka --version 0.1.0-alpha.5
#r "nuget: OpenTelemetry.Instrumentation.ConfluentKafka, 0.1.0-alpha.5"
#:package OpenTelemetry.Instrumentation.ConfluentKafka@0.1.0-alpha.5
#addin nuget:?package=OpenTelemetry.Instrumentation.ConfluentKafka&version=0.1.0-alpha.5&prerelease
#tool nuget:?package=OpenTelemetry.Instrumentation.ConfluentKafka&version=0.1.0-alpha.5&prerelease
Confluent.Kafka client instrumentation for OpenTelemetry
| Status | |
|---|---|
| Stability | Development |
| Code Owners | @g7ed6e |
Usage
To use the OpenTelemetry.Instrumentation.ConfluentKafka package, follow these
steps:
Install the package:
dotnet add package OpenTelemetry.Instrumentation.ConfluentKafka --prereleaseConfigure OpenTelemetry in your application:
using Confluent.Kafka; using OpenTelemetry.Metrics; using OpenTelemetry.Trace; var builder = Host.CreateApplicationBuilder(args); const string bootstrapServers = "localhost:9092"; builder.Services.AddSingleton(_ => { ProducerConfig producerConfig = new() { BootstrapServers = bootstrapServers }; return new InstrumentedProducerBuilder<string, string>(producerConfig); }); builder.Services.AddSingleton(_ => { ConsumerConfig consumerConfigA = new() { BootstrapServers = bootstrapServers, GroupId = "group-a", AutoOffsetReset = AutoOffsetReset.Earliest, EnablePartitionEof = true, }; return new InstrumentedConsumerBuilder<string, string>(consumerConfigA); }); builder.Services.AddOpenTelemetry() .WithTracing(tracing => { tracing.AddConsoleExporter() .AddOtlpExporter() .AddKafkaProducerInstrumentation<string, string>() .AddKafkaConsumerInstrumentation<string, string>(); }) .WithMetrics(metering => { metering.AddConsoleExporter() .AddOtlpExporter() .AddKafkaProducerInstrumentation<string, string>() .AddKafkaConsumerInstrumentation<string, string>(); }); builder.Services.AddHostedService<ProduceConsumeHostedService>(); var app = builder.Build(); await app.RunAsync();
This will set up OpenTelemetry instrumentation for Confluent.Kafka producers and consumers, allowing you to collect and export telemetry data.
Extending ConsumerBuilder or ProducerBuilder instances
To extend an already built ConsumerBuilder<TKey, TValue>
or ProducerBuilder<TKey, TValue>
instance with OpenTelemetry instrumentation, you can use the AsInstrumentedConsumerBuilder
and AsInstrumentedProducerBuilder extension methods.
Example for ConsumerBuilder<TKey, TValue>
using Confluent.Kafka;
using OpenTelemetry.Instrumentation.ConfluentKafka;
var consumerConfig = new ConsumerConfig
{
BootstrapServers = "localhost:9092",
GroupId = "my-group",
AutoOffsetReset = AutoOffsetReset.Earliest
};
var consumerBuilder = new ConsumerBuilder<string, string>(consumerConfig);
// Set various handlers and properties
consumerBuilder.SetErrorHandler((consumer, error) => Console.WriteLine($"Error: {error.Reason}"));
consumerBuilder.SetLogHandler((consumer, logMessage) => Console.WriteLine($"Log: {logMessage.Message}"));
consumerBuilder.SetStatisticsHandler((consumer, statistics) => Console.WriteLine($"Statistics: {statistics}"));
// Convert to InstrumentedConsumerBuilder
var instrumentedConsumerBuilder = consumerBuilder.AsInstrumentedConsumerBuilder();
// Build the consumer
var consumer = instrumentedConsumerBuilder.Build();
Example for ProducerBuilder<TKey, TValue>
using Confluent.Kafka;
using OpenTelemetry.Instrumentation.ConfluentKafka;
var producerConfig = new ProducerConfig
{
BootstrapServers = "localhost:9092"
};
var producerBuilder = new ProducerBuilder<string, string>(producerConfig);
// Set various handlers and properties
producerBuilder.SetErrorHandler((producer, error) => Console.WriteLine($"Error: {error.Reason}"));
producerBuilder.SetLogHandler((producer, logMessage) => Console.WriteLine($"Log: {logMessage.Message}"));
producerBuilder.SetStatisticsHandler((producer, statistics) => Console.WriteLine($"Statistics: {statistics}"));
// Convert to InstrumentedProducerBuilder
var instrumentedProducerBuilder = producerBuilder.AsInstrumentedProducerBuilder();
// Build the producer
var producer = instrumentedProducerBuilder.Build();
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- Confluent.Kafka (>= 2.4.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- OpenTelemetry.Api.ProviderBuilderExtensions (>= 1.15.0 && < 2.0.0)
-
.NETStandard 2.0
- Confluent.Kafka (>= 2.4.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- OpenTelemetry.Api.ProviderBuilderExtensions (>= 1.15.0 && < 2.0.0)
-
net10.0
- Confluent.Kafka (>= 2.4.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- OpenTelemetry.Api.ProviderBuilderExtensions (>= 1.15.0 && < 2.0.0)
-
net8.0
- Confluent.Kafka (>= 2.4.0)
- Microsoft.Extensions.Options (>= 8.0.0)
- OpenTelemetry.Api.ProviderBuilderExtensions (>= 1.15.0 && < 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.5 | 23,813 | 1/21/2026 |
| 0.1.0-alpha.4 | 24,670 | 11/13/2025 |
| 0.1.0-alpha.3 | 1,728 | 10/23/2025 |
| 0.1.0-alpha.2 | 277,596 | 9/18/2024 |
| 0.1.0-alpha.1 | 698 | 9/16/2024 |