Manually instrument .NET applications 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.DiagnosticSource
dependency to your project:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
Create an
ActivitySource
instance:private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered");
Create an
Activity
. Optionally, set tags:using (var activity = RegisteredActivity.StartActivity("Main")) { activity?.SetTag("foo", "bar1"); // your logic for Main activity }
Register your
ActivitySource
by setting theOTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES
environmental variable. You can set the value to eitherExamples.ManualInstrumentations.Registered
or toExamples.ManualInstrumentations.*
, which registers the entire prefix.
See the OpenTelemetry official documentation for additional information and examples.
Create custom metrics 🔗
To create custom metrics, follow these steps:
Add the
System.Diagnostics.DiagnosticSource
dependency to your project:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
Create a
Meter
instance:using var meter = new Meter("My.Application", "1.0");
Create an
Instrument
instance:var counter = meter.CreateCounter<long>("custom.counter", description: "Custom counter's description");
Update the
Instrument
value:counter.Add(1);
Register your
Meter
with OpenTelemetry.AutoInstrumentation by setting theOTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES
environment variable:OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=My.Application
See the OpenTelemetry official documentation <https://opentelemetry.io/docs/languages/net/instrumentation/#metrics for additional information and examples.