Skip to content
This repository was archived by the owner on Sep 2, 2025. It is now read-only.

Commit c2bbfbd

Browse files
committed
Splunk OTel .NET 1.9.0
1 parent 242de43 commit c2bbfbd

File tree

4 files changed

+26
-82
lines changed

4 files changed

+26
-82
lines changed

_includes/requirements/dotnet.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@ 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+
.. warning::
18+
19+
Version 1.9.0 of Splunk Distribution of OpenTelemetry .NET will no longer work with .NET 6 or .NET 7.
20+
.NET 6 reached End of Life on November 12, 2024 and .NET 7 reached End of Life on May 14, 2024.
21+
Customers who want to continue instrumenting .NET 6 or .NET 7 services must use Splunk Distribution of OpenTelemetry .NET version 1.8.0 or less.
22+
Best effort support for Splunk Distribution of OpenTelemetry .NET is provided up to November 12, 2025
23+
for the last versions of .NET 6 (version 6.0.36) or .NET 7 (version 7.0.20) only.
1824

1925
The distribution supports the following architectures:
2026

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

Lines changed: 1 addition & 1 deletion
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/troubleshooting/common-dotnet-troubleshooting.rst

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,21 @@ 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+
Traces from your instrumented application or service are not available in Splunk Observability Cloud
83+
84+
Verify the supported .NET versions
85+
----------------------------------------------------------------
86+
87+
Make sure that your application targets :ref:`supported versions of .NET <dotnet-requirements>`.
88+
If the version is not supported you might find in the logs entries similar to:
89+
90+
.. code-block:: bash
91+
92+
[Information] Rule Engine: Error in StartupHook initialization: 6.0.36 is not supported
93+
[Error] Rule 'Minimum Supported Framework Version Validator' failed: Verifies that the application is running on a supported version of the .NET runtime.
94+
95+
Verify the OpenTelemetry Collector configuration
96+
----------------------------------------------------------------
8397

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

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

157171
None of the .NET Framework versions is supported.
158172

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

Lines changed: 0 additions & 76 deletions
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)