Docs » Supported integrations in Splunk Observability Cloud » Instrument back-end applications to send spans to Splunk APM » Instrument .NET applications for Splunk Observability Cloud (OpenTelemetry) » Manually instrument .NET applications for Splunk Observability Cloud

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:

  1. Install the Splunk Distribution of OpenTelemetry .NET. See Instrument your .NET application.

  2. Add the System.Diagnostics.DiagnosticSource dependency to your project:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
    
  3. Create an ActivitySource instance:

    private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered");
    
  4. Create an Activity. Optionally, set tags:

    using (var activity = RegisteredActivity.StartActivity("Main"))
    {
       activity?.SetTag("foo", "bar1");
       // your logic for Main activity
    }
    
  1. Register your ActivitySource by setting the OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES environmental variable. You can set the value to either Examples.ManualInstrumentations.Registered or to Examples.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:

  1. Add the System.Diagnostics.DiagnosticSource dependency to your project:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
    
  2. Create a Meter instance:

    using var meter = new Meter("My.Application", "1.0");
    
  3. Create an Instrument instance:

    var counter = meter.CreateCounter<long>("custom.counter", description: "Custom counter's description");
    
  4. Update the Instrument value:

    counter.Add(1);
    
  5. Register your Meter with OpenTelemetry.AutoInstrumentation by setting the OTEL_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.

This page was last updated on Nov 13, 2024.