1

我正在学习 OpenTelemetry,我想知道 dotnet-monitor 如何与 OpenTelemetry (Meter) 连接。这些东西是否以某种方式连接起来,或者 dotnet-monitor 只是不使用 OpenTelemetry 标准(API、SDK 和出口商)的自定义 MS 工具。

4

1 回答 1

1

如果您在计算机上运行 dotnet-monitor,它会以 Prometheus 格式公开 dotnet 指标,这意味着您可以设置 OpenTelemetry 收集器来抓取这些指标

例如在 OpenTelemetry-collector-contrib 配置中

    receivers:
      prometheus_exec:
        exec: dotnet monitor collect
        port: 52325

请注意,要运行 dotnet-monitor,您需要在路径中创建一个 setting.json:

    $XDG_CONFIG_HOME/dotnet-monitor/settings.json

如果 $XDG_CONFIG_HOME 未定义,则在此路径中创建文件:

    $HOME/.config/dotnet-monitor/settings.json

如果您想通过其 PID 识别进程,请将其写入 settings.json(将值更改为您的 PID):

    {
      "DefaultProcess": {
        "Filters": [{
          "Key": "ProcessId",
          "Value": "1"
        }]
      }
    }

如果您想通过名称来识别进程,请将其写入 settings.json(将 Value 更改为您的进程名称):

    {
      "DefaultProcess": {
        "Filters": [{
          "Key": "ProcessName",
          "Value": "iisexpress"
        }]
      },
    }

在我的示例中,我使用了以下配置:

    {
      "DefaultProcess": {
        "Filters": [{
          "Key": "ProcessId",
          "Value": "1"
        }]
      },
      "Metrics": {
        "Providers": [
          {
        "ProviderName": "System.Net.Http"      
          },
          {
        "ProviderName": "Microsoft-AspNetCore-Server-Kestrel"
          }
        ]
      }
    }
于 2022-01-13T23:12:32.570 回答