LogoLogo
StackState.comDownloadSupportExplore playground
StackState v5.1
StackState v5.1
  • Welcome to the StackState docs!
  • StackState self-hosted v5.1 docs
  • Getting Started
  • 🚀Setup
    • Install StackState
      • Requirements
      • Kubernetes / OpenShift
        • Kubernetes install
        • OpenShift install
        • Required Permissions
        • Non-high availability setup
        • Override default configuration
        • Configure storage
        • Configure Ingress
        • Install from custom image registry
        • Migrate from Linux install
      • Linux
        • Before you install
        • Download
        • Install StackState
        • Install with production configuration
        • Install with development configuration
        • Install with POC configuration
        • Set up a reverse proxy
        • Set up TLS without reverse proxy
      • Initial run guide
      • Troubleshooting
    • Upgrade StackState
      • Steps to upgrade
      • Version specific upgrade instructions
      • StackPack versions
      • StackState release notes
    • StackState Agent
      • About StackState Agent V3
      • Docker
      • Kubernetes / OpenShift
      • Linux
      • Windows
      • Advanced Agent configuration
      • Use an HTTP/HTTPS proxy
      • Agent V1 (legacy)
      • Migrate Agent V1 to Agent V2
        • Linux
        • Docker
    • StackState CLI
      • CLI: sts
      • CLI: stac (deprecated)
      • Comparison between CLIs
    • Data management
      • Backup and Restore
        • Kubernetes backup
        • Linux backup
        • Configuration backup
      • Data retention
      • Clear stored data
  • 👤Use
    • Concepts
      • The 4T data model
      • Components
      • Relations
      • Health state
      • Layers, Domains and Environments
      • Perspectives
      • Anomaly detection
      • StackState architecture
    • StackState UI
      • Explore mode
      • Filters
      • Views
        • About views
        • Configure the view health
        • Create and edit views
        • Visualization settings
      • Perspectives
        • Topology Perspective
        • Events Perspective
        • Traces Perspective
        • Metrics Perspective
      • Timeline and time travel
      • Analytics
      • Keyboard shortcuts
    • Checks and monitors
      • Checks
      • Add a health check
      • Anomaly health checks
      • Monitors
      • Manage monitors
    • Problem analysis
      • About problems
      • Problem lifecycle
      • Investigate a problem
      • Problem notifications
    • Metrics
      • Telemetry streams
      • Golden signals
      • Top metrics
      • Add a telemetry stream
      • Browse telemetry
      • Set telemetry stream priority
    • Events
      • About events
      • Event notifications
      • Manage event handlers
    • Glossary
  • 🧩StackPacks
    • About StackPacks
    • Add-ons
      • Autonomous Anomaly Detector
      • Health Forecast
    • Integrations
      • About integrations
      • 💠StackState Agent V2
      • 💠AWS
        • AWS
        • AWS ECS
        • AWS X-ray
        • StackState/Agent IAM role: EC2
        • StackState/Agent IAM role: EKS
        • Policies for AWS
        • AWS (legacy)
        • Migrate AWS (legacy) to AWS
      • 💠Dynatrace
      • 💠Kubernetes
      • 💠OpenShift
      • 💠OpenTelemetry
        • About instrumentations
        • AWS NodeJS Instrumentation
        • Manual Instrumentation
          • Prerequisites
          • Tracer and span mappings
          • Relations between components
          • Span health state
          • Merging components
          • Code examples
      • 💠ServiceNow
      • 💠Slack
      • 💠Splunk
        • Splunk
        • Splunk Events
        • Splunk Health
        • Splunk Metrics
        • Splunk Topology
      • 💠VMWare vSphere
      • Apache Tomcat
      • Azure
      • Cloudera
      • Custom Synchronization
      • DotNet APM
      • Elasticsearch
      • Humio
      • Java APM
      • JMX
      • Logz.io
      • MySQL
      • Nagios
      • OpenMetrics
      • PostgreSQL
      • Prometheus
      • SAP
      • SCOM
      • SolarWinds
      • Static Health
      • Static Topology
      • Traefik
      • WMI
      • Zabbix
    • Develop your own StackPacks
  • 🔧Configure
    • Topology
      • Component actions
      • Identifiers
      • Topology naming guide
      • Topology sources
      • Create a topology manually
      • Configure topology synchronizations
      • Enable email event notifications
      • Send topology data over HTTP
      • Set the topology filtering limit
      • Use a proxy for event handlers
      • Use tags
      • Tune topology synchronization
      • Debug topology synchronization
    • Telemetry
      • Add telemetry during topology synchronization
      • Data sources
        • Elasticsearch
        • Prometheus mirror
      • Send events over HTTP
      • Send metrics data over HTTP
      • Set the default telemetry interval
      • Debug telemetry synchronization
    • Traces
      • Set up traces
      • Advanced configuration for traces
    • Health
      • Health synchronization
      • Send health data over HTTP
        • Send health data
        • Repeat Snapshots JSON
        • Repeat States JSON
        • Transactional Increments JSON
      • Debug health synchronization
    • Anomaly Detection
      • Export anomaly feedback
      • Scale the AAD up and down
      • The AAD status UI
    • Security
      • Authentication
        • Authentication options
        • File based
        • LDAP
        • Open ID Connect (OIDC)
        • KeyCloak
        • Service tokens
      • RBAC
        • Role-based Access Control
        • Permissions
        • Roles
        • Scopes
        • Subjects
      • Secrets management
      • Self-signed certificates
      • Set up a security backend for Linux
      • Set up a security backend for Windows
    • Logging
      • Kubernetes logs
      • Linux logs
      • Enable logging for functions
  • 📖Develop
    • Developer guides
      • Agent checks
        • About Agent checks
        • Agent check API
        • Agent check state
        • How to develop Agent checks
        • Connect an Agent check to StackState
      • Custom functions and scripts
        • StackState functions
        • Check functions
        • Component actions
        • Event handler functions
        • ID extractor functions
        • Mapping functions
        • Monitor functions
        • Propagation functions
        • Template functions
        • View health state configuration functions
      • Custom Synchronization StackPack
        • About the Custom Synchronization StackPack
        • How to customize elements created by the Custom Synchronization StackPack
        • How to configure a custom synchronization
      • Integrate external services
      • Mirroring Telemetry
      • Monitors
        • Create monitors
        • Monitor STJ file format
      • StackPack development
        • How to create a StackPack
        • Packaging
        • How to get a template file
        • How to make a multi-instance StackPack
        • Prepare a multi-instance provisioning script
        • Upload a StackPack file
        • Prepare a shared template
        • Customize a StackPack
        • Prepare instance template files
        • Prepare a StackPack provisioning script
        • Resources in a StackPack
        • StackState Common Layer
      • Synchronizations and templated files
    • Reference
      • StackState OpenAPI docs
      • StackState Template JSON (STJ)
        • Using STJ
        • Template functions
      • StackState Markup Language (STML)
        • Using STML
        • STML Tags
      • StackState Query Language (STQL)
      • StackState Scripting Language (STSL)
        • Scripting in StackState
        • Script result: Async
        • Script result: Streaming
        • Time in scripts
        • Script APIs
          • Async - script API
          • Component - script API
          • HTTP - script API
          • Prediction - script API
          • StackPack - script API
          • Telemetry - script API
          • Time - script API
          • Topology - script API
          • UI - script API
          • View - script API
    • Tutorials
      • Create a simple StackPack
      • Push data to StackState from an external system
      • Send events to StackState from an external system
      • Set up a mirror to pull telemetry data from an external system
Powered by GitBook
LogoLogo

Legal notices

  • Privacy
  • Cookies
  • Responsible disclosure
  • SOC 2/SOC 3
On this page
  • Overview
  • Traces installation
  • Configuration
  • Configuration Variables
  1. StackPacks
  2. Integrations

DotNet APM

StackState Self-hosted v5.1.x

PreviousCustom SynchronizationNextElasticsearch

Last updated 1 year ago

Overview

To begin tracing applications written in any language, first make sure to have StackState Agent V3 installed and configured. The .NET Tracer runs in-process to instrument your applications and sends traces from your application to StackState .

DotNet APM is a .

Traces installation

To enable tracing and sending it to Stackstate Trace Agent, you need to follow the below steps to get started.

To start instrumentation for your dot net application, add the Datadog.Trace to your application.

This can be done using in number of ways:

  • Using Package Manager

Install-Package Datadog.Trace -Version 1.13.2
  • using net cli

dotnet add package Datadog.Trace --version 1.13.2
  • reference in solution file

<PackageReference Include="Datadog.Trace" Version="1.13.2" />

In your code, you can access the global tracer through the Datadog.Trace.Tracer.Instance property to create new spans.

Configuration

There are multiple ways to configure the .NET Tracer:

  • in .NET code

  • setting environment variables

  • editing the application’s app.config/web.config file (.NET Framework only)

To configure the Tracer in application code, create a TracerSettings from the default configuration sources. Set properties on this TracerSettings instance before passing it to a Tracer constructor. For example:

    using Datadog.Trace;

    // read default configuration sources (env vars, web.config, datadog.json)
    var settings = TracerSettings.FromDefaultSources();

    // change some settings
    settings.ServiceName = "MyService";
    settings.AgentUri = new Uri("http://localhost:8126/");

    // disable the AdoNet integration
    settings.Integrations["AdoNet"].Enabled = false;

    // create a new Tracer using these settings
    var tracer = new Tracer(settings);

    // set the global tracer
    Tracer.Instance = tracer;

Note: Settings must be set on TracerSettings before creating the Tracer. Changes made to TracerSettings properies after the Tracer is created are ignored.

To configure the Tracer using environment variables, set the variables before launching the instrumented application. For example:

    rem Set environment variables
    SET DD_TRACE_AGENT_URL=http://localhost:8126
    SET DD_SERVICE_NAME=MyService
    SET DD_ADONET_ENABLED=false

    rem Launch application
    example.exe

Note: To set environment variables for a Windows Service, use the multi-string key HKLM\System\CurrentControlSet\Services\{service name}\Environment in the Windows Registry.

To configure the Tracer using an app.config or web.config file, use the <appSettings> section. For example:

    <configuration>
      <appSettings>
        <add key="DD_TRACE_AGENT_URL" value="http://localhost:8126"/>
        <add key="DD_SERVICE_NAME" value="SampleMVC4Application"/>
        <add key="DD_ADONET_ENABLED" value="false"/>
      </appSettings>
    </configuration>

Those two steps (referencing assembly, configuring endpoint) is enough for stackstate-agent to start consuming traces info.

Configuration Variables

The following tables list the supported configuration variables. Use the first name (for example, DD_TRACE_AGENT_URL) when setting environment variables or configuration files. The second name, if present (for example, AgentUri), indicates the name the TracerSettings property to use when changing settings in the code.

The first table below lists configuration variables available.

Setting Name
Description

DD_TRACE_AGENT_URL, AgentUri

Sets the URL endpoint where traces are sent. Overrides DD_AGENT_HOST and DD_TRACE_AGENT_PORT if set. Default value is http://<DD_AGENT_HOST>:<DD_TRACE_AGENT_PORT>.

DD_AGENT_HOST

Sets the host where traces are sent (the host running the Agent). Can be a hostname or an IP address. Ignored if DD_TRACE_AGENT_URL is set. Default is value localhost.

DD_TRACE_AGENT_PORT

Sets the port where traces are sent (the port where the Agent is listening for connections). Ignored if DD_TRACE_AGENT_URL is set. Default value is 8126.

DD_ENV Environment

If specified, adds the env tag with the specified value to all generated spans.

DD_SERVICE_NAME ServiceName

If specified, sets the default service name. Otherwise, the .NET Tracer tries to determine service name automatically from application name (for example, IIS application name, process entry assembly, or process name).

DD_TRACE_GLOBAL_FLAGS GlobalTags

If specified, adds all of the specified tags to all generated spans.

Automatic instrumentation (experimental)

To use experimental automatic instrumentation on Windows, install the .NET Tracer on the host using the MSI installer for Windows.

After installing the .NET Tracer, restart applications and IIS service so they can read the new environment variables.

If your application runs in IIS, tracing information will be collected immediately after the service restart.

For Dotnet Windows applications not running in IIS, set these two environment variables before starting your application to enable automatic instrumentation:

NAME
VALUE

COR_ENABLE_PROFILING

1

COR_PROFILER

{846F5F1C-F9AE-4B07-969E-05C26BC060D8}

For example, environment variables can be set in the cmd file used to start your application:

rem Set environment variables
SET COR_ENABLE_PROFILING=1
SET COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}

rem Start application
example.exe

To set environment variables for a Windows Service, use the multi-string key

HKLM\System\CurrentControlSet\Services\{service name}\Environment in the Windows Registry.

Note: The .NET runtime tries to load a profiler into any .NET process that's started with these environment variables. You should limit instrumentation only to the applications that need to be traced. We don't recommend setting these environment variables globally as this causes all .NET processes on the host to load the profiler.

If host has datadog so-called automatic instrumentation installed, following settings can be used.

Setting Name
Description

DD_TRACE_ENABLED TraceEnabled

Enables or disables all automatic instrumentation. Setting the environment variable to false completely disables the CLR profiler. For other configuration methods, the CLR profiler is still loaded, but traces won't be generated. Valid values are: true (default) or false.

DD_TRACE_DEBUG

Enables or disables debug logs in the Tracer. Valid values are: true or false (default). Setting this as an environment variable also enabled debug logs in the CLR Profiler.

DD_TRACE_LOG_PATH

Sets the path for the CLR profiler’s log file. Default: %ProgramData%\Datadog .NET Tracer\logs\dotnet-profiler.log

DD_DISABLED_INTEGRATIONS DisabledIntegrationNames

Sets a list of integrations to disable. All other integrations remain enabled. If not set, all integrations are enabled. Supports multiple values separated with semicolons.

Frameworks supported out of the box

Framework or library
NuGet package
Integration Name

ASP.NET (including Web Forms)

built-in

AspNet

ASP.NET MVC

Microsoft.AspNet.Mvc 4.0+

AspNetMvc

ASP.NET Web API 2

Microsoft.AspNet.WebApi 5.1+

AspNetWebApi2

WCF (server)

built-in

Wcf

ADO.NET

built-in

AdoNet

HttpClient / HttpClientHandler

built-in

HttpMessageHandler

WebClient / WebRequest

built-in

WebRequest

Redis (StackExchange client)

StackExchange.Redis 1.0.187+

StackExchangeRedis

Redis (ServiceStack client)

ServiceStack.Redis 4.0.48+

ServiceStackRedis

Elasticsearch

Elasticsearch.Net 5.3.0+

ElasticsearchNet

MongoDB

MongoDB.Driver.Core 2.1.0+

MongoDb

🧩
NuGet package
StackState curated integration