我正在尝试监视IIS中同一站点内的多个应用程序。刚刚运行示踪剂msi
的dd-trace-dotnet,我开始看到事件,但这些被注册为[site name]/[application]
,例如default_web_site/docs_webhook
我希望能够在每个应用程序的自定义服务名称下记录它们,但根据documentation,这只能在站点级别进行。
针对Windows服务描述了手动检测,在注册表项DD_SERVICE_NAME
中设置环境变量HKLM\System\CurrentControlSet\Services\{service name}\Environment
就足够了,但不适用于IIS应用程序。
注意:现在不能为每个应用程序创建单独的站点。
对于要使用其他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
从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员工]