Manually instrument .NET applications for Splunk Observability Cloud 🔗
The Splunk Distribution of OpenTelemetry .NET automatic instrumentation provides a base you can build on by adding your own manual instrumentation. By using both automatic 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.