🔧

Windows EC2 に .NET Aspire Dashboard を Dockerなしで導入する

に公開

.NET Aspire を開発環境で使っていたが、ステージング環境の Windows EC2 でも telemetry を見たくなったので、Docker を使わず standalone dashboard を導入した。
Dockerを使わない構成情報があんまりないのかAIが適当すぎて、結局自力で構築する羽目になったのでメモ。

構成は以下。

Windows Server (EC2)
├ IIS
│ ├ Blazor Web App
│ └ Worker API

└ Aspire Dashboard (Windows Service)

  • Dockerなし
  • Windows Service化
  • IIS共存
  • OpenTelemetry exporter 利用

1. Aspire CLI をインストール

公式:
https://aspire.dev/get-started/install-cli/

管理者権限 PowerShellで実行。

irm https://aspire.dev/install.ps1 | iex

確認:

aspire --version
# 出力例: 13.3.5+70b33bcb5f64c75e3ab6f57616545f35bd43dc81

2. Aspire Dashboard を起動

aspire dashboard run

起動すると以下が表示される:

Dashboard: http://localhost:18888/login?t=...
OTLP/gRPC: http://localhost:4317
OTLP/HTTP: http://localhost:4318


3. アプリ側設定

appsettings.Production.json

{
  "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318",
  "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
  "OTEL_SERVICE_NAME": "アプリ名"
}

4. 確認

http://localhost:18888/login?t=...

Traces / Metrics / Logs が出れば成功


5. Windows Service 化(NSSM)

NSSM公式:
https://nssm.cc/download

Zipダウンロード後解凍。
管理者権限 PowerShellで実行。

C:\nssm\win64\nssm.exe install AspireDashboard

GUIで以下を設定。

Path:
C:\Users\USER\.aspire\bin\aspire.exe
# インストールしたAspireのパス

Startup:
C:\Users\USER\.aspire\bin
# インストールしたAspireのフォルダ

Arguments:
dashboard run --urls http://127.0.0.1:18888
# トークンなしのローカルホストのみ起動

Environment:
DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true
# トークン認証を無効化

サービス開始。

net start AspireDashboard

補足・注意

ポート 用途
18888 Dashboard (UI閲覧用)
4317 OTLP/gRPC
4318 OTLP/HTTP

トークン認証を無効化しているので、18888 / 4317 / 4318 は外部公開しない。
永続化ログはNLogで担保。Dashboardは普通に消えるので、あくまで補助。


まとめ

WindowsサーバーでAspireのためだけにDockerを入れたくない環境でも
Aspire Dashboardの恩恵が受けられる。

Discussion