Azure Monitor とサード パーティ製ツールを使用してテレメトリを表示する
アプリがテレメトリ データを収集しているため、より包括的な表示方法が必要になりました。 このユニットでは、さまざまなツールでテレメトリ データを表示する方法について説明します。
テレメトリ データの監視と表示
テレメトリ データを表示する一般的な方法は、Prometheus と Grafana を一緒に使用することです。 Prometheus は、クラウドネイティブ アプリからメトリックを収集するオープンソースの監視システムです。 Grafana は、Prometheus によって収集されたメトリックを表示するダッシュボードの作成に使用するオープンソースの視覚化ツールです。
プロメテウス
最初の手順では、Prometheus コンテナーを追加し、アプリ内の各マイクロサービスからデータを収集するように構成します。 次に、Prometheus .NET クライアント ライブラリを追加して、アプリからメトリックを収集します。
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 に接続するように構成します。
Prometheus をデータ ソースとして YAML ファイルの Grafana に追加します。
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
isDefault: true
access: proxy
editable: true
分散トレースを有効にする
OpenTelemetry では、Jaeger と Zipkin の両方がサポートされています。 このモジュールでは、オープンソースの分散トレース システムである Zipkin を使用します。 マイクロサービス アーキテクチャの待機時間の問題のトラブルシューティングに必要なタイミング データを収集するのに役立ちます。 このデータのコレクションと検索の両方を管理します。
診断プロジェクトでは、 OpenTelemetry.Exporter.Zipkin NuGet パッケージを使用して Zipkin のサポートを追加する必要があります。 次に、 AddObservability メソッドにコードを追加して、Zipkin にデータをエクスポートします。
Application Insights を使用して詳細を確認する
メトリックの表示と分散トレースの表示を組み合わせて、ログのデータとマージできるツールがあります。 Application Insights は、拡張可能なアプリケーション パフォーマンス管理 (APM) サービスです。 これを使用して、ライブ Web アプリケーションを監視できます。 Application Insights は、パフォーマンスの異常を自動的に検出します。 組み込まれている強力な分析ツールを使えば、問題を診断し、ユーザーがアプリを使用して実行している操作を把握できます。
上記のツールと同様に、ソリューション Azure.Monitor.OpenTelemetry.AspNetCoreに NuGet パッケージを追加し、診断プロジェクトにエクスポーターとして Azure Monitor を導入する必要があります。