OpenTelemetry トレースとメトリクス
OpenTelemetry は、トレース、メトリクス、ログを簡単にエクスポートできるアプリケーションを作成できるように設計された API、SDK、ツールのセットです。OpenTelemetry API は、分散トレースとメトリクス計測用の単一の API セットを提供し、データを自動的に収集して、選択したバックエンドに送信します。
PyCharm に実装されている OpenTelemetry 統計には、トレースとメトリクスが含まれます。トレーサーはアクティビティを表すスパンを作成します。メトリクスにはカウンターとゲージが含まれます。詳細については、OpenTelemetry ドキュメント(英語)を参照してください。
idea.properties ファイルを使用して OpenTelemetry を有効にすることができます。
IDE のメインメニューから、Help | Edit Custom Properties を選択します。
開いたファイルに次のコードを追加します。
idea.diagnostic.opentelemetry.otlp=true
スパン
スパンはトレースを含む単一の操作を表します。スパンはエンドポイントに送信され、Jaeger UI で視覚化できます。Jaeger は Docker で起動できます。Jaeger UI の設定(英語)方法については、リンクをクリックしてください。
スパンの設定
Jaeger で Docker コンテナーを起動します。
Jaeger をダウンロードするには、次のバイナリ(英語)を使用します。
Jaeger コンテナーを起動するには、ターミナルで次のコードを実行します。
docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -e COLLECTOR_OTLP_ENABLED=true \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ -p 14250:14250 \ -p 14268:14268 \ -p 14269:14269 \ -p 9411:9411 \ jaegertracing/all-in-one:1.38Jaeger UI のスパンを表示するには、localhost:16686 にアクセスしてください。
トレースエンドポイントは次のプロパティで定義できます。
idea.diagnostic.opentelemetry.otlpフラグが true の場合、その値はデフォルトに設定されます: http://127.0.0.1:4318/
OpenTelemetry メトリクス
OpenTelemetry メトリクスは、ログフォルダーに保存されます。正しい場所については、ドキュメントを参照してください。
open-telemetry-metrics.csv
メトリクスレポートパスは idea.diagnostic.opentelemetry.metrics.file で定義できます。
open-telemetry-connection-metrics.gz
このファイルは、PyCharm バージョン 2023.2 以降で使用できます。
open-telemetry-lux-metrics.gz
リモート開発のフラグ OpenTelemetry スパンとメトリクス
rdct.diagnostic.otlp
これはバックエンド側でのみ有効になります。
バックエンドスパンはバックエンド側で蓄積され、フロントエンド側に送信されます。バックエンドとフロントエンドの両方のすべてのスパンは、フロントエンドから定義されたエンドポイントに送信されます。
rdct.connection.metrics.enabled
これは両側で有効にする必要があります。
これは、PyCharm バージョン 2023.2 以降で利用可能です。
lux.metrics.enabled
リモート開発指標
これらのメトリクスは 1 秒ごとに 1 回記録されます。
それらには次のものが含まれます。
rdct.FramedByteChannel.sentFrames.projectName: TLS 経由で送信されたフレームの数 (バックエンドとフロントエンド)rdct.CountingByteChannel.readBytesRate.projectName: TLS 経由で受信したバイト数 (バックエンドとフロントエンド側)rdct.CountingByteChannel.writeBytesRate.projectName: TLS 経由で送信されたバイト数 (バックエンドとフロントエンド)rdct.FramedByteChannel.receivedFrames.projectName: TLS 経由で受信したフレームの数 (バックエンドとフロントエンド)rdct.ThinClientRdPortServerSocketWrapper.sentBytes.projectName: ポート転送チャネルを介して、薄いフロントエンドプロセス内のユーザーアプリケーション(ブラウザーなど)から送信されたバイトrdct.ThinClientRdPortServerSocketWrapper.receivedBytes.projectName: ポート転送チャネルを介してシンフロントエンドプロセスでユーザーアプリケーション(ブラウザーなど)から受信したバイト
FramedByteChannel は、フロントエンドとバックエンド間の TLS 経由のバイトメッセージチャネルです。バイトはフレームに蓄積され、チャネルを介して送受信されます。
rdct.FramedByteChannel.receivedFramesLenRate.projectName: TLS 経由で受信したフレームの長さ (バックエンドとフロントエンドの両方)rdct.FramedByteChannel.sentFramesLenRate.projectName: TLS 経由で送信されるフレームの長さ (バックエンドとフロントエンドの両方)rdct.TransportWrapperImpl.connectionState.projectName: 接続状態の序数: 0 -> 「未接続」、1 -> 「接続済み」、2 -> 「閉鎖」、3 -> 「拒否」、4 -> 「障害」 (バックエンドとフロントエンドの両方)rdct.ThinClientDiagnosticsService.pingDirect: シンクライアントの ping 値 (フロントエンド)rdct.ThinClientDiagnosticsService.pingUI: フロントエンド UI スレッドの ping 値 (フロントエンド)
ThinClientDiagnosticsService は、フロントエンドとバックエンドの接続情報を収集する、プロジェクトごとのフロントエンド側診断サービスです。ping メトリクスは、バックエンドプロセスによって処理されるプロトコル要求です。pingDirect はバックグラウンドスレッドで処理され、pingUI は EDT で処理されます。ping が 1 つもない場合は、ネットワークに問題がある (おそらくチャネルが何らかのデータで詰まっている) か、プロセスがフリーズしていると考えられます。pingDirect はあるが pingUI がない場合は、バックエンドで UI がハングしていると考えられます。バックエンドからの応答がすぐに受信されない場合は、ping プロパティに -1 値が設定されます。rdct.ThinClientDiagnosticsService.connectionState: フロントエンドの接続状態の序数: 0 -> WireNotConnected、1 -> NoPings、2 -> NoUiThreadPing、3 -> Connected (フロントエンド)
接続の問題を報告する
接続で問題が発生した場合は、次のワークフローを使用してデータを収集し、問題をさらに調査してください。
データを収集する
IDE のメインメニューから、Help | Edit Custom Properties を選択します。
idea.propertiesファイルに次のプロパティを追加します。rdct.connection.metrics.enabledこのプロパティはバックエンドとフロントエンドの両方で有効にする必要があります。
接続メトリクスは 1 秒間隔で報告されます。
接続の問題が再現されたら、フロントエンドとバックエンドの両方のログフォルダーに書き込まれる生成されたメトリクスファイルを収集します。これらのファイルは
*.gz解像度を持ち、ファイル名は次のようになります。open-telemetry-connection-metrics.2023-03-29-15-48-40.gzログフォルダーからすべてのメトリクスファイルを含むアーカイブを作成し、対応する YouTrack プロジェクト(英語)で作成された問題に添付します。
関連ページ:
IDE で使用されるディレクトリ
デフォルトでは、PyCharm は、各 IDE インスタンスのユーザー固有のファイル(構成、キャッシュ、プラグイン、ログなど)をユーザーのホームディレクトリに保存します。ただし、必要に応じて、これらのファイルを保存する場所を変更できます。IDE で使用されるファイルとディレクトリを見つけるメインメニューからを選択します。開いたダイアログには、PyCharm によって使用されるすべてのファイルとディレクトリが、現在のインストールの正確なパスとともに表示されます。リスト内の特定の項目を選択してキー...
セキュリティモデル
作業にリモートサーバーへのアクセスが含まれる場合、ローカルマシンとバックエンド間の接続が保護され、やり取りされるデータが十分に暗号化されていることを確認する必要があります。リモート開発セキュリティモデルを使用すると、作業のほぼすべてのセキュリティ面を制御できます。サーバー側とクライアント側の両方で実行される IDE コンポーネントがあります。バックエンドによってロードされた情報は、それ以上のユーザー操作なしでクライアントに転送できます。また、クライアントに提供されたすべての情報は、ユーザー操作な...