我正在尝试监视IIS中同一站点内的多个应用程序。
刚运行跟踪器dd-trace-dotnet的msi
,我开始看到事件,但是这些事件已注册为[site name]/[application]
,例如default_web_site/docs_webhook
我希望能够使用每个应用程序的自定义服务名称记录它们,但是根据documentation,这只能在站点级别进行。
描述了针对Windows服务的手动检测,在注册表项DD_SERVICE_NAME
中设置环境变量HKLM\System\CurrentControlSet\Services\{service name}\Environment
就足够了,但不适用于IIS应用程序。
注意:目前无法为每个应用程序创建单独的站点。
答案 0 :(得分:3)
对于每个要使用不同的 Datadog APM服务名称配置的Web应用程序,您需要设置环境变量DD_SERVICE_NAME
。如果它们都在同一个IIS进程下运行,那是不可能的。
在IIS中,有一个名为Application Pool的功能,可用于通过在不同进程下运行多个Web应用程序来隔离它们。
您需要做的第一件事是为每个Web应用程序创建一个单独的应用程序池。完成此操作后,您可以为每个应用程序池设置不同的DD_SERVICE_NAME
。 command用来设置范围为特定应用程序池的环境变量是
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='MyAppPool'].environmentVariables.[name='DD_SERVICE_NAME',value='my-service']" /commit:apphost
其中MyAppPool
是应用程序池的名称,而my-service
是要用于Datadog APM的服务名称。
运行上述命令后,必须重新启动IIS才能使更改生效:
net stop was /y
net start w3svc
答案 1 :(得分:2)
从Datadog的.NET Tracer 1.0版开始,您可以在应用程序的app.config
/ web.config
文件中设置大多数设置。例如,设置DD_SERVICE_NAME
:
<configuration>
<appSettings>
<add key="DD_SERVICE_NAME" value="my-service"/>
</appSettings>
</configuration>
[免责声明:我是Datadog员工]