Azure Monitor およびサードパーティ製ツールを使用して利用統計情報を表示する

完了

アプリでテレメトリ データを収集するにつれて、より包括的な表示方法が必要になりました。 このユニットでは、さまざまなツールでテレメトリ データを表示する方法を確認します。

利用統計情報の監視と表示

テレメトリ データを表示する一般的な方法は、Prometheus と Grafana を一緒に使用することです。 Prometheus は、クラウドネイティブ アプリからメトリックを収集するオープンソースの監視システムです。 Grafana はオープンソースの視覚化ツールです。Prometheus によって収集されたメトリックを表示するためのダッシュボードの作成に使用します。

Prometheus

最初のステップは、Prometheus コンテナーを追加して、アプリ内の各マイクロサービスからデータを収集するように構成することです。 次に、アプリからメトリックを収集するための Prometheus .NET クライアント ライブラリを追加します。

Screenshot that shows the configured Prometheus app showing the health of the eShopLite app.

OpenTelemetry は Prometheus のエクスポーターを提供します。 OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet パッケージを組み込むことで、このエクスポーターをアプリに追加できます。 このパッケージにより、解釈可能な形式でメトリックが Prometheus にエクスポートされます。 現在のコンソール エクスポーターを Prometheus エクスポーターに置き換えます。

アプリ内のすべてのマイクロサービスのエンドポイントを追加します。 次に例を示します。

global:
  scrape_interval: 1s

scrape_configs:
  - job_name: 'products'
    static_configs:
      - targets: ['backend:8080']
  - job_name: 'store'
    static_configs:
      - targets: ['frontend:8080']

Grafana

Grafana はオープンソースの視覚化ツールです。Prometheus によって収集されたメトリックを表示するダッシュボードの作成に使用できます。 Prometheus に接続し、メトリックをダッシュボードに表示するように Grafana を構成できます。 先ほどと同様に、アプリに Grafana コンテナーを追加して、Prometheus に接続するように構成します。

Screenshot that shows an ASP.NET dashboard in Grafana.

YAML ファイルで次のように、Prometheus をデータ ソースとして Grafana に追加します。

apiVersion: 1

datasources:
- name: Prometheus
  type: prometheus
  url: http://prometheus:9090 
  isDefault: true
  access: proxy
  editable: true

分散トレースを有効にする

OpenTelemetry では、Jaeger と Zipkin の両方がサポートされています。 このモジュールでは、オープンソースの分散トレース システムである Zipkin を使用します。 それにより、マイクロサービス アーキテクチャの待機時間に関する問題のトラブルシューティングに必要な、タイミング データを収集するのに役立ちます。 このデータの収集と検索の両方をそれによって管理します。

Screenshot that shows Zipkin showing the dependencies of the eShopLite app Store sending requests to the Products service.

診断プロジェクトで、OpenTelemetry.Exporter.Zipkin NuGet パッケージを使用して Zipkin のサポートを追加する必要があります。 次に、Zipkin にデータをエクスポートするコードを AddObservability メソッドに追加します。

Application Insights の詳細を確認する

メトリックの監視と分散トレースの表示を組み合わせて、それをログのデータとマージできるツールがあります。 Application Insights は、拡張可能なアプリケーション パフォーマンス管理 (APM) サービスです。 実行中の Web アプリの監視に使用できます。 Application Insights は、パフォーマンスの異常を自動的に検出します。 組み込まれている強力な分析ツールを使えば、問題を診断し、ユーザーがアプリを使用して実行している操作を把握できます。

Screenshot that shows Application Insights showing the health of the eShopLite app.

前述のツールと同様に、NuGet パッケージをソリューション Azure.Monitor.OpenTelemetry.AspNetCore に追加し、Azure Monitor をエクスポーターとして診断プロジェクトに導入する必要があります。