【问题标题】:Datadog - Monitoring multiple applications in the same site hosted by IISDatadog - 监控由 IIS 托管的同一站点中的多个应用程序
【发布时间】:2019-03-15 16:34:09
【问题描述】:

我正在尝试在 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应用程序。

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

【问题讨论】:

    标签: asp.net iis trace datadog apm


    【解决方案1】:

    对于您想要使用不同的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
    

    【讨论】:

      【解决方案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 员工]

      【讨论】:

      • 太棒了!问题,我应该将 Datadog.Trace NuGet 包添加到我的项目中以使其正常工作吗?
      • IIS 上的 .NET Framework 不需要 NuGet 包,除非您出于某种原因需要通过代码访问 Tracer(例如手动创建跨度或向跨度添加自定义标签)。
      • 哪个优先级高,是环境变量还是应用的设置?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2021-04-05
      相关资源
      最近更新 更多