OpenTelemetry
OpenTelemetry プラグインは、開発ワークフローにランタイムの可観測性をもたらします。 ログ、メトリクス、トレースを収集、処理、表示することで、アプリケーション内の実行時の動作やサービス間の関係性を理解できます。
OpenTelemetry プラグインをインストールする。
この機能は、インストールして有効にする必要がある OpenTelemetry(英語) プラグインに依存しています。 詳細については、 プラグイン設定を開く を参照してください。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 OpenTelemetry プラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
インストールが完了すると、プラグインによって OpenTelemetry サービスが サービスウィンドウ に追加されます。 デフォルトでは、 プロジェクトを実行するとすぐにサービスのデータ収集が開始されます(現在は .NET プロジェクトと .NET 起動設定構成がサポートされています)。

ほとんどの場合、ターゲット アプリケーションを開始する前に OpenTelemetry サービスを実行しておく必要があるため、デフォルトでは Rider を起動するとサービスも自動的に開始されます。 この設定を変更するには、JetBrains Rider 設定 Ctrl+Alt+S の ページで 起動時に OpenTelemetry ホストを起動する チェックボックスのチェックを外してください。
サービスを開始および停止するには、 サービス ウィンドウで OpenTelemetry ノードを選択し、ツールバーの対応するボタンを使用します。

サービスが実行中の場合、ツールバーにはホストアドレスと対応する環境変数も表示されます。 これらを使用して gRPC OTLP エンドポイントを手動で追加し、IDE 外でローカルに起動されたアプリを分析対象に追加できます。
デフォルトではポートはランダムに割り当てられますが、JetBrains Rider 設定 Ctrl+Alt+S の ページにある 固定の OTLP サーバーポートを使用する チェックボックスを使用して変更できます。
IDE から起動された .NET アプリケーションでは、 OTEL_EXPORTER_OTLP_ENDPOINT 環境変数が自動的に設定されます。 つまり、アプリケーションが OpenTelemetry で構成済みで OTLP エクスポーターが追加されているものの、エンドポイントがコード内で明示的に設定されていない場合、アプリケーションは自動的に Rider OTLP サーバーへのデータ送信を開始します。 環境変数の自動割り当てを無効化するには、JetBrains Rider 設定 Ctrl+Alt+S の ページで OpenTelemetry 環境変数を上書きする チェックボックスをオフにしてください。
OpenTelemetry データの研究
OpenTelemetry データの単位は、アプリケーションインスタンス(スペックでは サービスインスタンス(英語) )です。 デフォルトでは、インスタンスは GUID で識別され、生成元のアプリケーションごとにグループ化されます。 ログ タブには、タイムスタンプ、ログレベル、ログメッセージなどの詳細情報が表示されます。 ログをテキスト、レベル、その他の属性でフィルタリングすることで、関連する情報に簡単に絞り込むことができます。

ログとメトリクスはメモリに保存され、OTLP サーバーが再起動するとクリアされます。
コンテキストメニューを使用して、ツリービューから不要なインスタンスを削除できます。
ツールバーの コードへ移動 をクリックすると、ログエントリから対応するソースコードの場所へ移動できます。 ただし、ログエントリに {OriginalFormat} 属性が含まれている必要があり、サードパーティのコードや逆コンパイルされたコードへのナビゲーションはサポートされていないことに注意してください。
ツールバーの エディターで開く。 をクリックすると、ログエントリが JSON にシリアル化され、エディターで開きます。 シリアル化されたエントリは保存され、 エクスプローラーツールウィンドウ の スクラッチとコンソール ノードで利用できるようになります。
痕跡と範囲を調べる
トレース タブには、利用可能なすべての トレース(英語)とその詳細が表示されます。 トレースは、時間、期間、ID でフィルタリングできます。
スパン(英語)を視覚的に調べるには、リスト内のトレースを選択し、 トレースを調べる をクリックします。

サービスマップ
複数のアプリやサービスを分析する場合、 トレース(英語)に基づいてアーキテクチャダイアグラム(サービスマップ)を作成できます。 マップにはサービス、エンドポイント、データベース、メッセージキューが表示され、システム内の相互作用パターンと依存関係を理解できます。
サービスマップにデータを入力するには、アプリとサービスが分散トレース (HTTP リクエストなどを通じて) を生成することを確認します。
サービスマップを表示するには、 サービス ウィンドウで OpenTelemetry ノードを選択し、対応するツールバーボタンをクリックします。

自動計測
IDE から ASP.NET Core アプリを実行すると、JetBrains Rider は実行時に必要な OpenTelemetry 依存関係を挿入できるため、アプリは自動的に OpenTelemetry データの送信を開始します。
自動計測機能はデフォルトで無効になっています。 有効化するには、JetBrains Rider 設定 Ctrl+Alt+S の ページで 自動計測を許可する チェックボックスをオンにしてください。
自動インストルメンテーションは、迅速なテストを目的としています。 本番環境に近い環境では、OpenTelemetry の依存関係を手動で追加および設定することをお勧めします。 プロジェクトにすでに OpenTelemetry パッケージが含まれている場合、自動インストルメンテーションはスキップされます。
手動計装の例
自動インストルメント化される ASP.NET Core アプリの例を次に示します。
以下は OpenTelemetry 依存関係が構成された同じアプリです。
ローカル OpenTelemetry プロバイダーとの統合
Rider OpenTelemetry Satellite サービスは OTLP gRPC コレクター / エクスポーター API(英語) をサポートしており、IDE 外で動作する既存のローカル OpenTelemetry プロバイダーとの統合を可能にします。 これにより、テレメトリデータ(トレース、ログ、メトリクス)を Rider に直接送信することも、ローカルの OpenTelemetry Collector を介して送信することもできます。
テレメトリデータを直接送信
JetBrains Rider 設定 Ctrl+Alt+S の ページで、 OpenTelemetry 環境変数を上書きする を無効化し、 固定の OTLP サーバーポートを使用する を構成して Rider OpenTelemetry サービスを固定ポートにバインドします。
アプリケーションで、OTLP エクスポーターを Satellite サービスを指すように設定してください。 エンドポイントは
http://localhost:<port>であり、<port>はプラグイン設定で構成された値です。
複数の宛先 (Rider や外部監視サービスなど) にデータを転送する必要がある場合は、 オープンテレメトリコレクター(英語)を使用します。
OpenTelemetry Collector 経由でテレメトリデータの統合を送信
JetBrains Rider 設定 Ctrl+Alt+S の ページで、 OpenTelemetry 環境変数を上書きする を無効化し、 固定の OTLP サーバーポートを使用する を構成して Rider OpenTelemetry サービスを固定ポートにバインドします。
アプリケーションの OTLP エクスポータからテレメトリデータを受け入れるように OpenTelemetry Collector を構成します。
Rider OpenTelemetry Satellite サービスにデータをエクスポートするには、エクスポーターとして追加します (例:
endpoint: "localhost:17011")。Rider OpenTelemetry Satellite サービスをコレクターとして追加します。 例えば:
otlp/satellite: endpoint: "localhost:17011" tls: insecure: trueOpenTelemetry Collector 設定で適切なパイプライン(トレース / メトリクス / ログ)を参照し、それらのパイプラインに Rider OpenTelemetry Satellite サービスを含めます。 例えば:
service: pipelines: traces: receivers: ... exporters: [otlp/satellite] metrics: receivers: ... exporters: [otlp/satellite] logs: receivers: ... exporters: [otlp/satellite]