Datadog-监视IIS托管的同一站点中的多个应用程序

时间:2019-03-15 16:34:10

标签: asp.net iis tracing datadog apm

我正在尝试监视IIS中同一站点内的多个应用程序。 刚运行跟踪器dd-trace-dotnetmsi,我开始看到事件,但是这些事件已注册为[site name]/[application],例如default_web_site/docs_webhook
我希望能够使用每个应用程序的自定义服务名称记录它们,但是根据documentation,这只能在站点级别进行。
描述了针对Windows服务的手动检测,在注册表项DD_SERVICE_NAME中设置环境变量HKLM\System\CurrentControlSet\Services\{service name}\Environment就足够了,但不适用于IIS应用程序。

注意:目前无法为每个应用程序创建单独的站点。

2 个答案:

答案 0 :(得分:3)

对于每个要使用不同的 Datadog APM服务名称配置的Web应用程序,您需要设置环境变量DD_SERVICE_NAME。如果它们都在同一个IIS进程下运行,那是不可能的。

在IIS中,有一个名为Application Pool的功能,可用于通过在不同进程下运行多个Web应用程序来隔离它们。

您需要做的第一件事是为每个Web应用程序创建一个单独的应用程序池。完成此操作后,您可以为每个应用程序池设置不同的DD_SERVICE_NAMEcommand用来设置范围为特定应用程序池的环境变量是

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员工]