🔧
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 をインストール
公式:
管理者権限 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公式:
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