Skip to content

Commit 188db21

Browse files
Merge pull request #2593 from Kielek/splunk-otel-dotnet-1.9.0
Splunk OTel .NET 1.9.0
2 parents 37b2519 + 98adeeb commit 188db21

File tree

6 files changed

+26
-84
lines changed

6 files changed

+26
-84
lines changed

_includes/requirements/dotnet.rst

+6-3
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ The Splunk Distribution of OpenTelemetry .NET supports the following .NET versio
22

33
- Instrumentation for traces and metrics:
44

5+
- .NET 9.0 (End of Support: May 12, 2026)
56
- .NET 8.0 (End of Support: November 10, 2026)
6-
- .NET 6.0 (End of Support: November 12, 2024)
77
- .NET Framework 4.7 and higher
88
- .NET Framework 4.6.2 (End of Support: January 12, 2027)
99

1010
- AlwaysOn Profiling:
1111

12+
- .NET 9.0 (End of Support: May 12, 2026)
1213
- .NET 8.0 (End of Support: November 10, 2026)
13-
- .NET 6.0 (End of Support: November 12, 2024)
1414

1515
.. note:: .NET Framework is not supported for AlwaysOn Profiling.
1616

17-
.. note:: .NET 7 reached End of Life on May 14, 2024. Best effort support is provided for the last version only, 7.0.19, which was tested using Splunk Distribution of OpenTelemetry .NET version 1.5.0.
17+
.. caution::
18+
19+
The Splunk Distribution of OpenTelemetry .NET version 1.9.0 is not compatible with .NET 6 or .NET 7 since both have reached End of Life. If you want to continue instrumenting .NET 6 or .NET 7 services use the Splunk Distribution of OpenTelemetry .NET version 1.8.0 or lower.
20+
Best effort support for Splunk Distribution of OpenTelemetry .NET is provided up to November 12, 2025 only for the last versions of .NET 6 (version 6.0.36) and .NET 7 (version 7.0.20).
1821

1922
The distribution supports the following architectures:
2023

apm/profiling/get-data-in-profiling.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ To activate AlwaysOn Profiling, follow the steps for the appropriate programming
187187

188188
:strong:`Requirements`
189189

190-
AlwaysOn Profiling requires .NET 6.0 or higher.
190+
AlwaysOn Profiling requires .NET 8.0 or higher.
191191

192192
.. note:: .NET Framework is not supported.
193193

gdi/get-data-in/application/otel-dotnet/configuration/advanced-dotnet-configuration.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ The following settings control the AlwaysOn Profiling feature for the .NET instr
7171

7272
<div class="instrumentation" section="settings" group="category" filter="profiling" url="https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-dotnet/metadata.yaml" data-renaming='{"keys": "Identifier", "description": "Description", "instrumented_components": "Components", "signals": "Signals", "env": "Environment variable", "default": "Default", "type": "Type"}'></div>
7373

74-
.. note:: AlwaysOn Profiling for .NET is compatible with .NET 6.0 and higher. For more information on AlwaysOn Profiling, see :ref:`profiling-intro`.
74+
.. note:: AlwaysOn Profiling for .NET is compatible with .NET 8.0 and higher. For more information on AlwaysOn Profiling, see :ref:`profiling-intro`.
7575

7676
.. _dotnet-otel-trace-propagation-settings:
7777

gdi/get-data-in/application/otel-dotnet/instrumentation/connect-traces-logs.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Check compatibility and requirements
5050

5151
.. note:: Automatic log to trace correlation only works for .NET applications. For .NET Framework use manual correlation. See :ref:`manual-trace-logs-correlation-otel`.
5252

53-
``Microsoft.Extensions.Logging`` version ``8.0.0`` and higher are supported.
53+
``Microsoft.Extensions.Logging`` version ``9.0.0`` and higher are supported.
5454

5555
.. _dotnet-otel-enable-log-correlation:
5656

gdi/get-data-in/application/otel-dotnet/troubleshooting/common-dotnet-troubleshooting.rst

+17-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,22 @@ To find your runtime identifier, follow these steps:
7979
Traces don't appear in Splunk Observability Cloud
8080
==================================================================
8181

82-
If traces from your instrumented application or service are not available in Splunk Observability Cloud, verify the OpenTelemetry Collector configuration:
82+
If traces from your instrumented application or service are not available in Splunk Observability Cloud, check the following:
83+
84+
Verify the supported .NET versions
85+
----------------------------------------------------------------
86+
87+
Make sure that your application targets :ref:`the supported versions of .NET <dotnet-requirements>`.
88+
89+
If the .NET version you're using is not supported, your log entries might be similar to the following:
90+
91+
.. code-block:: bash
92+
93+
[Information] Rule Engine: Error in StartupHook initialization: 6.0.36 is not supported
94+
[Error] Rule 'Minimum Supported Framework Version Validator' failed: Verifies that the application is running on a supported version of the .NET runtime.
95+
96+
Verify the OpenTelemetry Collector configuration
97+
----------------------------------------------------------------
8398

8499
#. Make sure that ``OTEL_EXPORTER_OTLP_ENDPOINT`` points to the correct OpenTelemetry Collector instance host.
85100
#. Check that your collector instance is configured and running. See :ref:`otel-splunk-collector-tshoot`.
@@ -152,7 +167,7 @@ If AlwaysOn Profiling is :ref:`not working as intended <profiling-intro>`, check
152167
Unsupported .NET version
153168
-----------------------------------------------
154169

155-
To use AlwaysOn Profiling, upgrade your .NET version to .NET 6.0 or higher.
170+
To use AlwaysOn Profiling, upgrade your .NET version to 8.0 or higher.
156171

157172
None of the .NET Framework versions is supported.
158173

gdi/get-data-in/serverless/azure/instrument-azure-functions-dotnet.rst

-76
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,6 @@ Add the following libraries using NuGet in Visual Studio:
6565
- :new-page:`OpenTelemetry.Instrumentation.Http <https://www.nuget.org/packages/OpenTelemetry.Instrumentation.Http>`
6666
- :new-page:`OpenTelemetry.ResourceDetectors.Azure <https://www.nuget.org/packages/OpenTelemetry.ResourceDetectors.Azure>`
6767

68-
.. tab:: .NET 6 In-process function
69-
70-
#. Activate the :strong:`Include prerelease` setting.
71-
#. Install the specified version of the following libraries:
72-
73-
- :new-page:`OpenTelemetry version 1.3.2 <https://www.nuget.org/packages/OpenTelemetry/1.3.2>`
74-
- :new-page:`OpenTelemetry.Exporter.OpenTelemetryProtocol version 1.3.2 <https://www.nuget.org/packages/OpenTelemetry.Exporter.OpenTelemetryProtocol/1.3.2>`
75-
- :new-page:`OpenTelemetry.Instrumentation.Http version 1.0.0-rc9.4 <https://www.nuget.org/packages/OpenTelemetry.Instrumentation.Http/1.0.0-rc9.4>`
76-
- :new-page:`OpenTelemetry.Instrumentation.AspNetCore version 1.0.0-rc9.4 <https://www.nuget.org/packages/OpenTelemetry.Instrumentation.AspNetCore/1.0.0-rc9.4>`
77-
- :new-page:`Microsoft.Azure.Functions.Extensions version 1.1.0 <https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions/1.1.0>`
78-
79-
.. note:: Due to runtime dependencies, only the indicated versions are guaranteed to work when instrumenting in-process functions.
80-
8168
.. tab:: .NET 8 In-process function
8269

8370
#. Activate the :strong:`Include prerelease` setting.
@@ -161,69 +148,6 @@ After adding the dependencies, initialize OpenTelemetry in your function.
161148
162149
.. note:: When instrumenting isolated worker process functions, you can encapsulate startup initialization and parameters into other functions.
163150

164-
.. tab:: .NET 6 In-process function
165-
166-
Define a startup function and decorate the assembly with it. The startup function uses the Azure.Functions.Extensions package to collect useful metadata.
167-
168-
.. code-block:: csharp
169-
170-
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
171-
using Microsoft.Extensions.DependencyInjection;
172-
using OpenTelemetry;
173-
using OpenTelemetry.Exporter;
174-
using OpenTelemetry.Resources;
175-
using OpenTelemetry.Trace;
176-
using System;
177-
using System.Collections.Generic;
178-
179-
// Decorate assembly with startup function
180-
[assembly: FunctionsStartup(typeof(OtelManualExample.Startup))]
181-
182-
namespace OtelManualExample
183-
{
184-
public class Startup : FunctionsStartup
185-
{
186-
public override void Configure(IFunctionsHostBuilder builder)
187-
{
188-
// Get environment variables from function configuration
189-
// You need a valid Splunk Observability Cloud access token and realm
190-
var serviceName = Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME") ?? "Unknown";
191-
var accessToken = Environment.GetEnvironmentVariable("SPLUNK_ACCESS_TOKEN")?.Trim();
192-
var realm = Environment.GetEnvironmentVariable("SPLUNK_REALM")?.Trim();
193-
194-
ArgumentNullException.ThrowIfNull(accessToken, "SPLUNK_ACCESS_TOKEN");
195-
ArgumentNullException.ThrowIfNull(realm, "SPLUNK_REALM");
196-
197-
var tp = Sdk.CreateTracerProviderBuilder()
198-
// Use Add[instrumentation-name]Instrumentation to instrument missing services
199-
// Use Nuget to find different instrumentation libraries
200-
.AddHttpClientInstrumentation(opts =>
201-
// This filter prevents background (parent-less) http client activity
202-
opts.Filter = req => Activity.Current?.Parent != null)
203-
.AddAspNetCoreInstrumentation()
204-
// Use AddSource to add your custom DiagnosticSource source names
205-
//.AddSource("My.Source.Name")
206-
.SetSampler(new AlwaysOnSampler())
207-
// Add resource attributes to all spans
208-
.SetResourceBuilder(
209-
ResourceBuilder.CreateDefault()
210-
.AddService(serviceName: serviceName, serviceVersion: "1.0.0")
211-
.AddAttributes(new Dictionary<string, object>() {
212-
{ "faas.instance", Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID") }
213-
}))
214-
.AddOtlpExporter(opts =>
215-
{
216-
opts.Endpoint = new Uri($"https://ingest.{realm}.signalfx.com/v2/trace/otlp");
217-
opts.Protocol = OtlpExportProtocol.HttpProtobuf;
218-
opts.Headers = $"X-SF-TOKEN={accessToken}";
219-
})
220-
.Build();
221-
222-
builder.Services.AddSingleton(tp);
223-
}
224-
}
225-
}
226-
227151
.. tab:: .NET 8 In-process function
228152

229153
Define a startup function and decorate the assembly with it. The startup function uses the Azure.Functions.Extensions package to collect useful metadata.

0 commit comments

Comments
 (0)