Use the OpenTelemetry.DotNet.Auto.psm1"
PowerShell module
to set up automatic instrumentation for IIS:
# Import the module
Import-Module "OpenTelemetry.DotNet.Auto.psm1"
# Install core files
Install-OpenTelemetryCore
# Setup IIS instrumentation
Register-OpenTelemetryForIIS
Register-OpenTelemetryForIIS
performs IIS restart.
This is NOT required for ASP.NET Core deployments.
This step is necessary only for ASP.NET (.NET Framework).
Add OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule, OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule
ASP.NET HTTP module to your application's Web.config
.
You can add it in the following places:
<system.web>
<httpModules>
<add name="TelemetryHttpModule" type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule, OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<remove name="TelemetryHttpModule" />
<add name="TelemetryHttpModule" type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule, OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule" preCondition="managedHandler" />
</modules>
</system.webServer>
The ASP.NET HTTP module can be also set in applicationHost.config
.
Here is an example where you can add the module
to set it for all ASP.NET application running in Integrated Pipeline Mode:
<location path="" overrideMode="Allow">
<system.webServer>
<modules>
<add name="TelemetryHttpModule" type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule, OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule" preCondition="managedHandler" />
</modules>
</system.webServer>
</location>
Remember to restart IIS after making configuration changes. You can do it by executing
iisreset.exe
.
For ASP.NET application you can configure the most common OTEL_
settings
(like OTEL_SERVICE_NAME
) via appSettings
in Web.config
.
For ASP.NET Core application you can use
the <environmentVariable>
elements inside the <aspNetCore>
block of your Web.config
file
to set configuration via environment variables.
You can add the <environmentVariables>
in applicationHost.config
to set environment variables for given application pools.
For IIS versions older than 10.0, you can consider creating a distinct user, set its environment variables and use it as the application pool user.
Consider setting common environment variables,
for all applications deployed to IIS
by setting the environment variables for
W3SVC
and WAS
Windows Services as described in windows-service-instrumentation.md.