.NET Aspire ダッシュボードの使用

完了

テレメトリ データを記録したら、それを調べる方法が必要です。 .NET Aspire のダッシュボードには、テレメトリを調査し、問題を診断するための豊富なツールが用意されています。

あなたはアウトドア用機器の販売店で働いているとします。 .NET Aspire クラウドネイティブ アプリで OpenTelemetry を使用しています。 次はテレメトリで出力されるデータを調べ、それを使用してパフォーマンスを向上させることができるかどうかを判断したいと考えています。

このユニットでは、.NET Aspire ダッシュボードにテレメトリ データがどのように表示されるかを確認します。

.NET Aspire ダッシュボードのテレメトリ

開発用コンピューター上で .NET Aspire で構築されたアプリを起動し、各コンポーネントを実行するコンテナーを起動すると、.NET で .NET Aspire ダッシュボードが起動します。 この Web インターフェイスには 5 つのセクションがあり、そのうちの 4 つにはテレメトリが表示されます。

  • [リソース]: クラウドネイティブ アプリ全体を構成するコンテナー、プロジェクト、実行可能ファイルを一覧表示します。 各マイクロサービスに接続するには、[エンドポイント] 列のリンクを使用します。
  • コンソール:指定したコンポーネントから標準出力に送信されるテキストを表示します。
  • 構造化ログ:OpenTelemetry ロガーに送信された情報を表示します。
  • トレース:アプリ内の任意のマイクロサービスによって受信された各要求のトレースを表示します。
  • メトリック:選択したメトリックがどのように変化するかを示す構成可能な時間領域グラフを表示します。

ダッシュボードのログ

ログに記録されるイベントは、アプリが起動して実行されると何が起こるかを示します。 ダッシュボードには、コンソール ログと構造化ログという 2 種類のログ情報が表示されます。

コンソール ログ

コンソール ログには、アプリから標準出力に送信されたテキストが表示されます。 コマンドライン プログラムでは、そのようなテキストがコンソールに行として表示されますが、マイクロサービスとバッキング サービスには標準出力を表示する組み込みの場所がありません。 .NET Aspire は、ダッシュボードに [コンソール ログ] ページを提供することで支援します。

ページを開くときに、最初にマイクロサービスの 1 つなど、ソース コンポーネントを選択する必要があります。 このツールでは、そのソースからのすべての標準出力が、何らかの書式設定でメイン ウィンドウに表示されます。 たとえば、情報イベントは緑色で表示され、エラーは赤色で表示されます。

コンソール ログは単なるテキスト行です。 アプリケーションでは簡単に作成して出力できますが、人間にとっては読みにくく、構造がないため分析目的の処理が困難になります。

.NET Aspire ダッシュボードのコンソール ログを示すスクリーンショット。

構造化ログ

フラット テキストの代わりに、構造化ログでは、ログに記録されたメッセージがテンプレートとメッセージ パラメーターで保持されます。 この構造により、無関係なイベントをより簡単に除外できるため、ドリルダウンして特定の問題のトラブルシューティングを行うことができます。 運用環境では、ログを永続化し、インデックスを作成し、データベースのようにクエリを実行できます。 この方法では、含まれるデータに対して豊富な分析を実行できます。

Note

構造化ログは、セマンティック ログとも呼ばれます。

コードで、OpenTelemetry ILogger オブジェクトを使用して構造化ログにイベントを送信します。

logger.Info("{shopitem} added to basket by {user}", "Ski goggles", "Kenny");

.NET ダッシュボードの [構造化ログ] ページには、アプリ内のすべてのリソースからのイベントが表示されます。 ドリルダウンするには、トラブルシューティングを行うリソースを選択し、[フィルター][レベル] ボックスを使用して関連するイベントのみを表示します。

.NET Aspire ダッシュボードの構造化ログを示すスクリーンショット。

ダッシュボードの分散トレース

トレースは、要求が処理され、呼び出し元に返された方法を記述するレコードです。 各トレースには、アプリ内の複数のコンポーネントの呼び出しが含まれる場合があります。 たとえば、ユーザーが製品カタログ Web ページを要求すると、Web UI マイクロサービスがその要求を受け取り、Web ページをユーザーに返す前に、認証マイクロサービス、カタログ マイクロサービス、Redis キャッシュを呼び出す可能性があります。

.NET Aspire ダッシュボードのトレースのリストを示すスクリーンショット。

各トレースは、カタログ マイクロサービスの呼び出しなどのスパンで構成されます。 システムによって、各スパンがタイミングと親情報で記録されるため、どのコンポーネントが迅速に応答し、どのコンポーネントが遅延を引き起こすかを確認できます。 各スパンの詳細を確認できます。

.NET Aspire ダッシュボードの個々のトレースを示すスクリーンショット。

構造化ログと同様に、ソースを選択し、フィルターを適用してドリルダウンし、診断に関心のある特定の問題のトレースを見つけることができます。

ダッシュボードのメトリック

メトリックは、時間の経過に伴い変化する値であり、アプリのコンポーネントによって記録されます。 たとえば、メトリックでは、要求と応答の期間、またはカタログ マイクロサービスへのアクティブな接続の数を記録できます。 メトリックによっては、.NET に組み込まれているものや、OpenTelemetry SDK ライブラリが付属しているものがあり、開発者はコンポーネントに固有のカスタム OpenTelemetry メトリックを追加できます。

.NET Aspire ダッシュボードには、[メトリック] セクションが含まれています。これを使用すると、時間の経過に伴うメトリックの変化を調査して表示できます。

たとえば、http.server.active_requests メトリックでは、特定の時点で処理されている要求の数が表示されます。

.NET Aspire ダッシュボードのアクティブな要求メトリックのグラフを示すスクリーンショット。

http.server.request.duration メトリックでは、特定の時点でのアプリの応答性が表示されます。

.NET Aspire ダッシュボードの要求期間メトリックのグラフを示すスクリーンショット。

各グラフの下で、グラフを対象とするフィルターを指定できます。 たとえば、次のグラフは、ホームページ ルートへの要求の要求期間メトリックを示しています。

フィルターが適用された .NET Aspire ダッシュボードの要求期間メトリックのグラフを示すスクリーンショット。

詳細情報