rksoftware

Visual Studio とか C# とかが好きです

.NET Aspire のテレメトリ送信先設定を変更する

以前の記事で .NET Aspire のテレメトリの送信先が環境変数から来ていそうだということになりました。
そこで、設定を変えてみたいと思います。

■ 起動プロジェクトの launchSettings.json を変更


変更前

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15250",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:16061"
      }
    }
  }
}

変更後

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15250",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:16063"
      }
    }
  }
}

■ 実行

変更されました!

■ Web フロントプロジェクトだけ変えたい!

ということで、Web フロントプロジェクトの設定を変更してみます。

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5196",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:16064",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:16064"
      }
    }
  }
}

■ 実行

実行時に上書きされてしまうようです。

■ いったん変えられるように

こんな感じにコードを書き換えれば変えられました。ここから先は動かして試すのではなくコードを使う必要がありそうですね。

設定に A という値を追加しました。

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5196",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "A": "http://localhost:16064"
      }
    }
  }
}

Web フロントプロジェクトの起動時のコードの最初で、A の値で環境変数を上書きしてしまいます。

using AspireApp1.Web;
using AspireApp1.Web.Components;

System.Environment.SetEnvironmentVariable(
    "OTEL_EXPORTER_OTLP_ENDPOINT"
    , System.Environment.GetEnvironmentVariable("A")
    );

var builder = WebApplication.CreateBuilder(args);

これで、いったんは変えることができました。