diff --git a/Directory.Packages.props b/Directory.Packages.props
index 9035141f8..9529af6cf 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -17,7 +17,7 @@
-
+
diff --git a/docs/reference/setup-auto-instrumentation.md b/docs/reference/setup-auto-instrumentation.md
index 6306c5868..d7095f989 100644
--- a/docs/reference/setup-auto-instrumentation.md
+++ b/docs/reference/setup-auto-instrumentation.md
@@ -45,7 +45,7 @@ It instruments the following assemblies:
| AdoNet | part of .NET | System.Data 4.0.0 - 4.*.* |
| part of .NET | System.Data.Common 4.0.0 - 5.*.* |
| AspNet | part of .NET Framework | System.Web 4.0.0 - 4.*.* |
-| Kafka | [Confluent.Kafka 1.4.0 - 1.*.*](https://www.nuget.org/packages/Confluent.Kafka) | Confluent.Kafka 1.4.0 - 1.*.* |
+| Kafka | [Confluent.Kafka 1.4.0 - 2.*.*](https://www.nuget.org/packages/Confluent.Kafka) | Confluent.Kafka 1.4.0 - 2.*.* |
| MySqlCommand | [MySql.Data 6.7.0 - 8.*.*](https://www.nuget.org/packages/MySql.Data) | MySql.Data 6.7.0 - 8.*.* |
| NpgsqlCommand | [Npgsql 4.0.0 - 7.*.*](https://www.nuget.org/packages/Npgsql) | Npgsql 4.0.0 - 7.*.* |
| OracleCommand | [Oracle.ManagedDataAccess 12.2.1100 - 21.*.*](https://www.nuget.org/packages/Oracle.ManagedDataAccess) | Oracle.ManagedDataAccess 4.122.0 - 4.122.* |
diff --git a/docs/reference/setup-kafka.md b/docs/reference/setup-kafka.md
new file mode 100644
index 000000000..f73c8ebb5
--- /dev/null
+++ b/docs/reference/setup-kafka.md
@@ -0,0 +1,21 @@
+---
+mapped_pages:
+ - https://www.elastic.co/guide/en/apm/agent/dotnet/current/setup-kafka.html
+applies_to:
+ stack:
+ serverless:
+ observability:
+ product:
+ apm_agent_dotnet: ga
+---
+
+# Confluent Kafka [setup-kafka]
+
+## Quick start [_get_started]
+
+Instrumentation can be performed for Confluent Kafka by referencing [`Confluent.Kafka`](https://www.nuget.org/packages/confluent.kafka) and [`Confluent.Kafka.Extensions.Diagnostics`](https://www.nuget.org/packages/Confluent.Kafka.Extensions.Diagnostics) packages.
+
+`Confluent.Kafka` is not instrumented automatically but `Confluent.Kafka.Extensions.Diagnostics` provides instrumentations on top of `Confluent.Kafka`.
+
+Please, follow the instructions provided in [`Confluent.Kafka.Extensions.Diagnostics`](https://www.nuget.org/packages/Confluent.Kafka.Extensions.Diagnostics), especially for the `Producer`.
+
diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md
index 73367547e..7a949b94c 100644
--- a/docs/reference/supported-technologies.md
+++ b/docs/reference/supported-technologies.md
@@ -93,6 +93,7 @@ We support automatic instrumentation for the following messaging systems
| Azure.Messaging.ServiceBus 7.0.0+ |
| Azure Queue Storage {applies_to}`apm_agent_dotnet: ga 1.10` | Azure.Storage.Queues 12.6.0+ | [NuGet package](/reference/setup-azure-storage.md) |
| Kafka {applies_to}`apm_agent_dotnet: ga 1.12` | See profiler documentation | [Profiler auto instrumentation](/reference/setup-auto-instrumentation.md) |
+| Kafka | Confluent.Kafka 2.11.1 | [NuGet package](/reference/setup-kafka.md) |
| RabbitMQ {applies_to}`apm_agent_dotnet: ga 1.12` | See profiler documentation | [Profiler auto instrumentation](/reference/setup-auto-instrumentation.md) |
diff --git a/docs/reference/toc.yml b/docs/reference/toc.yml
index 474bcd925..d98346cd6 100644
--- a/docs/reference/toc.yml
+++ b/docs/reference/toc.yml
@@ -21,6 +21,7 @@ toc:
- file: setup-azure-servicebus.md
- file: setup-azure-storage.md
- file: setup-mongo-db.md
+ - file: setup-kafka.md
- file: supported-technologies.md
- file: configuration.md
children:
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerCloseIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerCloseIntegration.cs
index fed08cc17..1740785aa 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerCloseIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerCloseIntegration.cs
@@ -25,7 +25,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = ClrTypeNames.Void,
ParameterTypes = new string[0],
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerConsumeIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerConsumeIntegration.cs
index e826bf6f2..f6f61b024 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerConsumeIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerConsumeIntegration.cs
@@ -26,7 +26,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = KafkaIntegration.ConsumeResultTypeName,
ParameterTypes = new[] { ClrTypeNames.Int32 },
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerDisposeIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerDisposeIntegration.cs
index 57218e41d..12caaf7de 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerDisposeIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerDisposeIntegration.cs
@@ -25,7 +25,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = ClrTypeNames.Void,
ParameterTypes = new string[0],
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerUnsubscribeIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerUnsubscribeIntegration.cs
index 93e91ce28..c45fb8981 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerUnsubscribeIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaConsumerUnsubscribeIntegration.cs
@@ -25,7 +25,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = ClrTypeNames.Void,
ParameterTypes = new string[0],
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceAsyncIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceAsyncIntegration.cs
index 20b13121b..72ff4d566 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceAsyncIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceAsyncIntegration.cs
@@ -27,7 +27,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = KafkaIntegration.TaskDeliveryReportTypeName,
ParameterTypes = new[] { KafkaIntegration.TopicPartitionTypeName, KafkaIntegration.MessageTypeName, ClrTypeNames.CancellationToken },
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncDeliveryHandlerIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncDeliveryHandlerIntegration.cs
index 59c4df8f2..ae074bffc 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncDeliveryHandlerIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncDeliveryHandlerIntegration.cs
@@ -29,7 +29,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
ReturnType = ClrTypeNames.Void,
ParameterTypes = new[] { ClrTypeNames.String, "!0", "!1", KafkaIntegration.ActionOfDeliveryReportTypeName },
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
diff --git a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncIntegration.cs b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncIntegration.cs
index 441076ff5..3911a62da 100644
--- a/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncIntegration.cs
+++ b/src/profiler/Elastic.Apm.Profiler.Managed/Integrations/Kafka/KafkaProduceSyncIntegration.cs
@@ -29,7 +29,7 @@ namespace Elastic.Apm.Profiler.Managed.Integrations.Kafka
KafkaIntegration.TopicPartitionTypeName, KafkaIntegration.MessageTypeName, KafkaIntegration.ActionOfDeliveryReportTypeName
},
MinimumVersion = "1.4.0",
- MaximumVersion = "1.*.*",
+ MaximumVersion = "2.*.*",
Group = KafkaIntegration.Name)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]