Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 1.97 KB

windows-service-instrumentation.md

File metadata and controls

49 lines (40 loc) · 1.97 KB

Instrument a Windows Service running a .NET application

We recommend setting environment variables for a Windows Service using the Windows Registry.

Remember to restart the Windows Service after making changes to its configuration.

Set environment variables for a Windows Service

The registry key of a given Windows Service (named $svcName) is located under:

HKLM\SYSTEM\CurrentControlSet\Services\$svcName

The environment variables can be defined in a REG_MULTI_SZ (multiline registry value) called Environment in the following format:

Var1=Value1
Var2=Value2

Below is an example demonstrating how instrumentation can be configured in PowerShell (run as administrator):

$installationLocation = "C:\some\dir" # The path where you put the OTel .NET AutoInstrumentation binaries
$svcName = "MySrv"    # The name of the Windows Service
[string[]] $vars = @(
   "COR_ENABLE_PROFILING=1",
   "COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}",
   "COR_PROFILER_PATH_64=$installationLocation\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll",
   "COR_PROFILER_PATH_32=$installationLocation\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll",
   "CORECLR_ENABLE_PROFILING=1",
   "CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}",
   "CORECLR_PROFILER_PATH_64=$installationLocation\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll",
   "CORECLR_PROFILER_PATH_32=$installationLocation\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll",
   "DOTNET_ADDITIONAL_DEPS=$installationLocation\AdditionalDeps",
   "DOTNET_SHARED_STORE=$installationLocation\store",
   "DOTNET_STARTUP_HOOKS=$installationLocation\net\OpenTelemetry.AutoInstrumentation.StartupHook.dll",
   "OTEL_DOTNET_AUTO_HOME=$installationLocation",
   "OTEL_DOTNET_AUTO_INTEGRATIONS_FILE=$installationLocation\integrations.json",
   "OTEL_SERVICE_NAME=my-service-name"
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\$svcName -Name Environment -Value $vars