Manually instrument .NET applications for Splunk Observability Cloud
Manually instrument your .NET application to add custom attributes to spans or manually generate spans. Keep reading to learn how to manually instrument your .NET application for Splunk Observability Cloud.
The Splunk Distribution of OpenTelemetry .NET zero-code instrumentation provides a base you can build on by adding your own manual instrumentation. By using both zero-code and manual instrumentation, you can better instrument the logic and functionality of your applications, clients, and frameworks.
Create custom traces
To create custom spans and traces, follow these steps:
-
Install the Splunk Distribution of OpenTelemetry .NET. See Instrument your .NET application.
-
Add the
System.Diagnostics.DiagnosticSourcedependency to your project:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" /> -
Create an
ActivitySourceinstance:private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered"); -
Create an
Activity(Span). Optionally, set tags:using (var activity = RegisteredActivity.StartActivity("Custom Span Name")) { // Check if the activity is sampled and if full data collection is enabled. // This ensures that tags and other custom attributes are only set when the activity is being recorded. // Note: Ensure that skipping logic based on sampling does not interfere with essential business operations. if(activity?.IsAllDataRequested) { // your logic for custom activity activity.SetTag("foo", "bar1"); } } Register your
ActivitySourceby setting theOTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCESenvironmental variable. You can set the value to eitherExamples.ManualInstrumentations.Registeredor toExamples.ManualInstrumentations.*, which registers the entire prefix.Invoke the action that generates an
Activity, note the trace ID of theActivity, and locate the trace in Splunk APM. You should now see a span with the display name "Custom Span Name" in the trace tree.
See the OpenTelemetry official documentation for additional information and examples.
Create custom metrics
To create custom metrics, follow these steps:
-
Add the
System.Diagnostics.DiagnosticSourcedependency to your project:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" /> -
Create a
Meterinstance:using var meter = new Meter("My.Application", "1.0"); -
Create an
Instrumentinstance:var counter = meter.CreateCounter<long>("custom.counter", description: "Custom counter's description"); -
Update the
Instrumentvalue:counter.Add(1); -
Register your
Meterwith OpenTelemetry.AutoInstrumentation by setting theOTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCESenvironment variable:OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=My.Application
See OpenTelemetry official documentation in the official OpenTelemetry documentation for additional information and examples.