OpenTelemetry .NET instrumentation compatibility and requirements
This is what you need to instrument .NET applications for Splunk Observability Cloud.
Meet the following requirements to instrument .NET applications for Splunk Observability Cloud:
Ensure you are using supported .NET versions
The Splunk Distribution of OpenTelemetry .NET supports the following .NET versions:
-
Instrumentation for traces and metrics:
-
.NET 9.0 (End of Support: May 12, 2026)
-
.NET 8.0 (End of Support: November 10, 2026)
-
.NET Framework 4.7 and higher
-
.NET Framework 4.6.2 (End of Support: January 12, 2027)
-
-
AlwaysOn Profiling:
-
.NET 9.0 (End of Support: May 12, 2026)
-
.NET 8.0 (End of Support: November 10, 2026)
Note: .NET Framework is not supported for AlwaysOn Profiling.
-
The distribution supports the following architectures:
-
x86
-
AMD64 (x86-64)
Dependencies
Dependency | Link to source | Version | Stability |
---|---|---|---|
OpenTelemetry .NET | https://github.com/open-telemetry/opentelemetry-dotnet | 1.9.0 | Stable |
OpenTelemetry .NET Automatic Instrumentation | https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation | 1.9.0 | Stable |
Supported libraries
The Splunk Distribution of OpenTelemetry .NET instruments the following libraries:
Identifier | Components | Description | Stability | Support | Dependencies | Signals | Settings |
---|---|---|---|---|---|---|---|
ASPNET | Details | MVC / WebApi (Only integrated pipeline mode supported). Metrics requires trace instrumentation. | Beta | Community | Details | Details | Details |
ASPNETCORE | Details | Metrics automatically activates Microsoft.AspNetCore.Hosting.HttpRequestIn spans. | Beta | Community | Details | Details | Details |
AZURE | Details | Beta | Third-party |   |   |   | |
ELASTICSEARCH | Details | Versions 8.10.0 and higher are supported by Elastic.Transport instrumentation. | Beta | Third-party |   |   |   |
ELASTICTRANSPORT | Details |   | Beta | Third-party |   |   |   |
ENTITYFRAMEWORKCORE | Details | Not supported on .NET Framework | Beta | Community | Details |   | Details |
GRAPHQL | Details | Not supported on .NET Framework | Beta | Third-party |   |   | Details |
GRPCNETCLIENT | Details |   | Beta | Community | Details |   | Details |
HTTPCLIENT | Details |   | Beta | Community | Details | Details | Details |
KAFKA | Details |   | Beta | Community |   |   |   |
MASSTRANSIT | Details | Not supported on .NET Framework | Beta | Third-party |   |   |   |
MONGODB | Details | Not supported on .NET Framework | Beta | Third-party |   |   |   |
MYSQLCONNECTOR | Details |   | Beta | Third-party |   |   |   |
MYSQLDATA | Details | Not supported on .NET Framework | Beta | Third-party |   |   |   |
NPGSQL | Details |   | Beta | Third-party |   |   |   |
ORACLEMDA | Details | Not supported on ARM64 | Beta | Third-party |   |   | Details |
NSERVICEBUS | Details |   | Beta | Third-party |   | Details |   |
QUARTZ | Details | Not supported on .NET Framework 4.7.1 and lower | Beta | Community | Details |   |   |
RABBITMQ | Details |   | Beta | Community |   |   |   |
SQLCLIENT | Details |   | Beta | Community | Details |   | Details |
STACKEXCHANGEREDIS | Details | Not supported on .NET Framework | Beta | Community | Details |   |   |
WCFCLIENT, WCFSERVICE | Details | Service side not supported on .NET. WCFCLIENT for client side instrumentation and WCFSERVICE for service side instrumentation | Beta | Community | Details |   |   |
NETRUNTIME | Details |   | Beta | Community | Details | Details |   |
PROCESS | Details |   | Beta | Community | Details | Details |   |
ILOGGER | Details | Not supported on .NET Framework | Beta | Community |   |   |   |
ASPNET components
Name | Supported versions |
---|---|
ASP.NET Framework (.NET Framework) | See general requirements |
ASPNET dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
ASP.NET Instrumentation for OpenTelemetry | External Link | External Link | 1.9.0-beta.1 | Beta |
ASP.NET Telemetry HttpModule for OpenTelemetry | External Link | External Link | 1.9.0-beta.1 | Beta |
ASPNET signals
Metric name | Type | Description |
---|---|---|
http.server.request.duration | histogram | Measures the duration of inbound HTTP requests. |
ASPNET settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | A comma-separated list of HTTP header names. ASP.NET instrumentations will capture HTTP request header values for all configured header names. | String | Instrumentation |   |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | A comma-separated list of HTTP header names. ASP.NET instrumentations will capture HTTP response header values for all configured header names. Not supported on IIS Classic mode. | String | Instrumentation |   |
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTION | Whether the ASP.NET instrumentation turns off redaction of the url.query attribute value. | False | Boolean | Instrumentation |
ASPNETCORE Components
Name | Supported versions |
---|---|
ASP.NET Core | See general requirements |
ASPNETCORE dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
ASP.NET Core Instrumentation for OpenTelemetry .NET | External Link | External Link | 1.9.0 | Beta |
ASPNETCORE signals
Metric name | Type | Description |
---|---|---|
http.server.request.duration | histogram | Duration of the inbound HTTP request. |
http.server.active_requests | updowncounter | Number of active HTTP server requests. Supported only on .NET8+ |
kestrel.active_connections | updowncounter | Number of connections that are currently active on the server. Supported only on .NET8+ |
kestrel.connection.duration | histogram | The duration of connections on the server. Supported only on .NET8+ |
kestrel.rejected_connections | counter | Number of connections rejected by the server. Connections are rejected when the currently active count exceeds the value configured with MaxConcurrentConnections. Supported only on .NET8+ |
kestrel.queued_connections | updowncounter | Number of connections that are currently queued and are waiting to start. Supported only on .NET8+ |
kestrel.queued_requests | updowncounter | Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. Supported only on .NET8+ |
kestrel.upgraded_connections | updowncounter | Number of HTTP connections that are currently upgraded (WebSockets). The number only tracks HTTP/1.1 connections. Supported only on .NET8+ |
kestrel.tls_handshake.duration | histogram | The duration of TLS handshakes on the server. Supported only on .NET8+ |
kestrel.active_tls_handshakes | updowncounter | Number of TLS handshakes that are currently in progress on the server. Supported only on .NET8+ |
signalr.server.connection.duration | histogram | The duration of connections on the server. Supported only on .NET8+ |
signalr.server.active_connections | updowncounter | Number of connections that are currently active on the server. Supported only on .NET8+ |
aspnetcore.routing.match_attempts | counter | Number of requests that were attempted to be matched to an endpoint. Supported only on .NET8+ |
aspnetcore.diagnostics.exceptions | counter | Number of exceptions caught by exception handling middleware. Supported only on .NET8+ |
aspnetcore.rate_limiting.active_request_leases | updowncounter | Number of HTTP requests that are currently active on the server that hold a rate limiting lease. Supported only on .NET8+ |
aspnetcore.rate_limiting.request_lease.duration | histogram | The duration of rate limiting leases held by HTTP requests on the server. Supported only on .NET8+ |
aspnetcore.rate_limiting.queued_requests | updowncounter | Number of HTTP requests that are currently queued, waiting to acquire a rate limiting lease. Supported only on .NET8+ |
aspnetcore.rate_limiting.request.time_in_queue | histogram | The duration of HTTP requests in a queue, waiting to acquire a rate limiting lease. Supported only on .NET8+ |
aspnetcore.rate_limiting.requests | counter | Number of requests that tried to acquire a rate limiting lease. Requests could be rejected by global or endpoint rate limiting policies. Or the request could be canceled while waiting for the lease. Supported only on .NET8+ |
ASPNETCORE settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | A comma-separated list of HTTP header names. ASP.NET Core instrumentations will capture HTTP request header values for all configured header names. | String | Instrumentation |   |
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | A comma-separated list of HTTP header names. ASP.NET Core instrumentations will capture HTTP response header values for all configured header names. | String | Instrumentation |   |
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION | Whether the ASP.NET Core instrumentation turns off redaction of the url.query attribute value. | False | Boolean | Instrumentation |
AZURE components
Name | Supported versions |
---|---|
Azure SDK | Azure. prefixed packages, released after October 1, 2021 |
ELASTICSEARCH components
Name | Supported versions |
---|---|
Elastic.Clients.Elasticsearch | 8.0.0 to 8.9.3 |
ELASTICTRANSPORT components
Name | Supported versions |
---|---|
Elastic.Transport | 0.4.16 and higher |
ENTITYFRAMEWORKCORE components
Name | Supported versions |
---|---|
Microsoft.EntityFrameworkCore | 6.0.12 and higher |
ENTITYFRAMEWORKCORE dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
EntityFrameworkCore Instrumentation for OpenTelemetry .NET | External Link | External Link | 1.0.0-beta.12 | Beta |
ENTITYFRAMEWORKCORE settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXT | Whether the Entity Framework Core instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false , db.statement is recorded only for executing stored procedures. | False | Boolean | Instrumentation |
GRAPHQL components
Name | Supported versions |
---|---|
GraphQL | 7.5.0 and higher |
GRAPHQL settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENT | Whether the GraphQL instrumentation can pass raw queries through the graphql.document attribute. Queries might contain sensitive information. | False | Boolean | Instrumentation |
GRPCNETCLIENT components
Name | Supported versions |
---|---|
Grpc.Net.Client | 2.52.0 to 3.0.0 |
GRPCNETCLIENT dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
Grpc.Net.Client Instrumentation for OpenTelemetry | External Link | External Link | 1.9.0-beta.1 | Beta |
GRPCNETCLIENT settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_REQUEST_METADATA | A comma-separated list of gRPC metadata names. Grpc.Net.Client instrumentations will capture gRPC request metadata values for all configured metadata names. | String | Instrumentation |   |
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_RESPONSE_METADATA | A comma-separated list of gRPC metadata names. Grpc.Net.Client instrumentations will capture gRPC response metadata values for all configured metadata names. | String | Instrumentation |   |
HTTPCLIENT components
Name | Supported versions |
---|---|
System.Net.Http.HttpClient | See general requirements. |
System.Net.HttpWebRequest | See general requirements. |
HTTPCLIENT Dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
HttpClient and HttpWebRequest instrumentation for OpenTelemetry | External Link | External Link | 1.9.0 | Beta |
HTTPCLIENT signals
Metric name | Type | Description |
---|---|---|
http.client.request.duration | histogram | Duration of HTTP client requests. |
http.client.active_requests | updowncounter | Number of outbound HTTP requests that are currently active on the client. Supported only on .NET8+ |
http.client.open_connections | updowncounter | Number of outbound HTTP connections that are currently active or idle on the client. Supported only on .NET8+ |
http.client.connection.duration | histogram | The duration of successfully established outbound HTTP connections. Supported only on .NET8+ |
http.client.request.time_in_queue | histogram | The amount of time requests spent on a queue waiting for an available connection. Supported only on .NET8+ |
dns.lookup.duration | histogram | Measures the time taken to perform a DNS lookup. Supported only on .NET8+ |
HTTPCLIENT settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | A comma-separated list of HTTP header names. HTTP Client instrumentations will capture HTTP request header values for all configured header names. | String | Instrumentation |   |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | A comma-separated list of HTTP header names. HTTP Client instrumentations will capture HTTP response header values for all configured header names. | String | Instrumentation |   |
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION | Whether the HTTP client instrumentation turns off redaction of the url.full attribute value. | False | Boolean | Instrumentation |
KAFKA components
Name | Supported versions |
---|---|
Confluent.Kafka | ARM64: 1.8.2 to 3.0.0. Other platforms: 1.4.0 to 3.0.0 |
MASSTRANSIT components
Name | Supported versions |
---|---|
MassTransit | 8.0.0 and higher |
MONGODB components
Name | Supported versions |
---|---|
MongoDB.Driver.Core | 2.28.0 to 3.0.0 |
MYSQLCONNECTOR Components
Name | Supported versions |
---|---|
MySqlConnector | 2.0.0 and higher |
MYSQLDATA Components
Name | Supported versions |
---|---|
MySql.Data | 8.1.0 and higher |
NPGSQL components
Name | Supported versions |
---|---|
Npgsql | 6.0.0 and higher |
ORACLEMDA components
Name | Supported versions |
---|---|
Oracle.ManagedDataAccess.Core | 23.4.0 and higher |
Oracle.ManagedDataAccess | 23.4.0 and higher |
ORACLEMDA settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXT | Whether the Oracle Client instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false , db.statement is recorded only for executing stored procedures. | False | Boolean | Instrumentation |
NSERVICEBUS components
Name | Supported versions |
---|---|
NServiceBus | 8.0.0 to 10.0.0 |
NSERVICEBUS signals
Metric name | Type | Description |
---|---|---|
nservicebus.messaging.successes | counter | Number of messages successfully processed by the endpoint. |
nservicebus.messaging.fetches | counter | Number of messages retrieved from the queue by the endpoint. |
nservicebus.messaging.failures | counter | Number of messages unsuccessfully processed by the endpoint. |
QUARTZ components
Name | Supported versions |
---|---|
Quartz | 3.4.0 and higher |
QUARTZ dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
QuartzNET Instrumentation for OpenTelemetry .NET | External Link | External Link | 1.0.0-beta.3 | Beta |
RABBITMQ components
Name | Supported versions |
---|---|
RabbitMQ.Client | 6.0.0 to 7.0.0 |
SQLCLIENT components
Name | Supported versions |
---|---|
Microsoft.Data.SqlClient | v3.* is not supported on .NET Framework |
System.Data.SqlClient | 4.8.5 and higher |
System.Data | Shipped with .NET Framework |
SQLCLIENT dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
SqlClient instrumentation for OpenTelemetry .NET | External Link | External Link | 1.9.0-beta.1 | Beta |
SQLCLIENT settings
Environment variable | Description | Default | Type | Category |
---|---|---|---|---|
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXT | Whether the SQL Client instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false , db.statement is recorded only for executing stored procedures. Not supported on .NET Framework for System.Data.SqlClient. | False | Boolean | Instrumentation |
STACKEXCHANGEREDIS components
Name | Supported versions |
---|---|
StackExchange.Redis | 2.6.122 to 3.0.0 |
STACKEXCHANGEREDIS dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
StackExchange.Redis Instrumentation for OpenTelemetry | External Link | External Link | 1.0.0-rc9.15 | Beta |
WCFCLIENT components
Name | Supported versions |
---|---|
System.ServiceModel | 4.7.0 and higher of System.ServiceModel.Primitives |
WCFCLIENT dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
WCF Instrumentation for OpenTelemetry .NET | External Link | External Link | 1.0.0-rc.18 | Beta |
NETRUNTIME components
Name |
---|
.NET runtime |
NETRUNTIME dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
Runtime Instrumentation for OpenTelemetry .NET | External Link | External Link | 1.9.0 | Stable |
NETRUNTIME signals
Metric name | Type | Description |
---|---|---|
process.runtime.dotnet.gc.collections.count | counter | Number of garbage collections since the process started. |
process.runtime.dotnet.gc.heap.size | updowncounter | Heap size, as observed during the last garbage collection. Only available for .NET 6 or higher. |
process.runtime.dotnet.gc.heap.fragmentation.size | updowncounter | Heap fragmentation, as observed during the last garbage collection. Only available for .NET 7 or higher. |
process.runtime.dotnet.gc.objects.size | updowncounter | Count of bytes currently in use by live objects in the GC heap. |
process.runtime.dotnet.gc.allocations.size | counter | Count of bytes allocated on the managed GC heap since the process started. Only available for .NET 6 or higher. |
process.runtime.dotnet.gc.committed_memory.size | updowncounter | Amount of committed virtual memory for the managed GC heap, as observed during the last garbage collection. Only available for .NET 6 and higher. |
process.runtime.dotnet.gc.duration | counter | The total amount of time paused in GC since the process start. Only available for .NET 7 and higher. |
process.runtime.dotnet.monitor.lock_contention.count | counter | Contentions count when trying to acquire a monitor lock since the process started. |
process.runtime.dotnet.thread_pool.threads.count | counter | Number of thread pool threads, as observed during the last measurement. Only available for .NET 6 or higher. |
process.runtime.dotnet.thread_pool.completed_items.count | counter | Number of work items processed by the thread pool since the process started. Only available for .NET 6 or higher. |
process.runtime.dotnet.thread_pool.queue.length | updowncounter | Number of work items currently queued for processing by the thread pool. Only available for .NET 6 or higher. |
process.runtime.dotnet.jit.il_compiled.size | counter | Bytes of intermediate language that have been compiled since the process started. Only available for .NET 6 or higher. |
process.runtime.dotnet.jit.methods_compiled.count | counter | Number of times the JIT compiler compiled a method since the process started. Only available for .NET 6 or higher. |
process.runtime.dotnet.jit.compilation_time | counter | Amount of time the compiler spent compiling methods since the process started. Only available for .NET 6 or higher. |
process.runtime.dotnet.timer.count | updowncounter | Number of timer instances currently active. Only available for .NET 6 or higher. |
process.runtime.dotnet.assemblies.count | updowncounter | Number of .NET assemblies that are currently loaded. |
process.runtime.dotnet.exceptions.count | counter | Count of exceptions thrown in managed code since the observation started. |
PROCESS components
Name |
---|
Process |
PROCESS dependencies
Name | Source | Package URL | Version | Stability |
---|---|---|---|---|
Process Instrumentation for OpenTelemetry .NET | External Link | External Link | 0.5.0-beta.b | Beta |
PROCESS signals
Metric name | Type | Description |
---|---|---|
process.memory.usage | updowncounter | The amount of physical memory allocated for this process. |
process.memory.virtual | updowncounter | The amount of committed virtual memory for this process. |
process.cpu.time | counter | Total CPU seconds broken down by different states, such as user and system. |
process.cpu.count | updowncounter | Total CPU seconds broken down by different states, such as user and system. |
process.threads | updowncounter | Process threads count. |
ILOGGER components
Name | Supported versions |
---|---|
Microsoft.Extensions.Logging | 8.0.0 and higher |
Install and configure the Splunk Distribution of OpenTelemetry Collector
The Splunk Distribution of OpenTelemetry .NET exports application traces and spans to the Splunk Distribution of OpenTelemetry Collector, which also collects system metric data and logs, including profiling data.
To send application traces and spans to Splunk Observability Cloud, install the Splunk Distribution of OpenTelemetry Collector for your platform. The following distributions are available:
-
Splunk OTel Collector for Linux. See Install the Collector for Linux with the installer script.
-
Splunk OTel Collector for Windows. See Install the Collector for Windows with the installer script.
-
Splunk OTel Collector for Kubernetes. See Install the Collector for Kubernetes using Helm.