ローカルでOTelのトレースとログを確認するにはAspire Dashboardが便利
https://learn.microsoft.com/ja-jp/dotnet/core/diagnostics/observability-otlp-example
手元でOtelのトレースを確認したいことがちょいちょいありツールを探していたが、.net系のツールであるAspire Dashboardが良さそうだった。
dockerコマンド一発で起動できて、ミニマムに必要なものが揃っていて良い。
https://gyazo.com/55688ea6facb9849dcf8a5881eb9964c
https://gyazo.com/d74bf0767ae80c84924d3c54dd9edbcf
右上にMCPのアイコンあるので、MCPサーバになる機能あるのかなって思ったけど動かなそうな雰囲気?
Standaloneだと使えない機能なのかも
https://github.com/dotnet/aspire/issues/14733
使い方
dockerで起動
code: sh
docker run -d --name aspire-dashboard \
-p 18888:18888 \
-p 18889:18889 \
-p 18890:18890 \
mcr.microsoft.com/dotnet/aspire-dashboard:latest
デフォルトだとOTelのエンドポイントはUnsecuredで起動する
ログにログイン用のトークンを含んだURLがでるので、それからUIを開く
docker logs aspire-dashboard
Login to the dashboard at http://localhost:18888/login?t=7fba... . The URL may need changes depending on how network access to the container is configured.
環境変数でDASHBOARD__FRONTEND__AUTHMODE=Unsecuredとか指定すると認証無しにもできるっぽい?
アプリケーションの環境変数でexport先を指定
code:.env
OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:18890"
OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
Aspire-dashboardはhttp/jsonに対応していないので注意
https://aspire.dev/ja/dashboard/standalone/#:~:text=ダッシュボードは現在OTLP/gRPCプロトコルのみをサポートしています
と書いてあるんだが、自分のアプリケーションではgRPCだと動かなかった
アプリケーション側が原因の可能性が大だが、http/protobufだと動いたのでそれでよしとしている
他に見たツール
otel-tui
https://github.com/ymtdzzz/otel-tui
コレクタも内蔵されていて、コマンド一発で起動できて便利だが、TUIなのでちょっと使いづらいところがある
トレースが送れているか程度の確認だったらこれで十分だとは思う
Jaeger (all in one)
https://www.jaegertracing.io/docs/1.76/getting-started/
dockerで起動するタイプ
手元で確認するのにはちょっと重厚過ぎるかも
本番環境向けにセルフホストするならこれくらい必要なんだとは思うけど
雰囲気で使うにはちょっと難しい
あとJaegerはOTelのトレースだけを扱うツールで、ログに関しては見る機能が乏しい?
前試したときはall in oneに入っているGrafana経由で見た気がする
SigNoz (docker standalone)
https://signoz.io/docs/install/docker/
動かしてみてはいないので詳細は分からない
dockerで起動するタイプ
Jaegerと同じくらい重厚そうに見えるが、ちょっとモダンか?
#2026Mar