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

Datadog - Monitoring multiple applications in the same site hosted by IIS

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

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

对于每个要配置不同 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

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