Planet Python 日本語
フォロー
グラハム・ダンプルトン:OpenTelemetryのラッピング付きエクスポート
Wraptureは現在、OpenTelemetryをトレースデータの一流の先として統合しています。すべてのインストールに付属する「wrapture.otel」サブパッケージは、トレーシングバックエンドへのシームレスなエクスポートを可能にします。設定に「[otel]」テーブルを追加することで、ユーザーはトレースを有効にしたり、サービス名を指定したり、個々の信号設定を調整したりできます。この構成により、エラーやリクエストの詳細を含むアプリケーションの動作を詳細に内省することが可能になります。OpenTelemetry環境変数がトレースデータの送信先を決定し、コンソールのエクスポーターで即時デバッグが可能です。各アプリケーションイベントはスパンに変換され、階層的なトレースを形成します。例えば、Flaskリクエストはサーバースパンとなり、内部呼び出しはネストされたスパンを作ります。「KeyError」のようなエラー条件は、ステータスコードや例外の詳細で正確に記録されます。インストゥルメンテーションは引数やその他の注釈付きデータをスパン属性として自動的にキャプチャし、クレジットカード番号などの機密情報は黒塗りされます。これにより、エラーが完全に文書化され、特定の操作と親要求スパンの両方で発生します。複数のプロセスにまたがる分散トレースは、W3Cのトレースコンテキスト伝播によって実現されます。Wraptureは送信リクエストにtraceコンテキストヘッダーを注入し、受信サービスのミドルウェアで解析されます。これにより、traceは異なるサービス間にまたがり、一貫したtrace IDを維持できます。OpenTelemetryのエクスポートが有効になっても、Wraptureは独自の発行されたtrace IDを保持し、継続性を確保します。同じ追跡されたイベントからもメトリクスが生成され、明示的な計測コード変更を必要とせずに集約された洞察を提供します。リクエスト時間や通話時間はHTTPメソッド、ルート、ステータスコードなどの関連情報によって自動的に収集・帰属されます。これらのメトリクスは価値あるパフォーマンスおよびエラー率の情報を提供します。OpenTelemetryでラッピングを使う場合のオーバーヘッドは、OpenTelemetry SDKの直接利用と同等です。ラッピングは完成したスパンを直接構築することでスパン処理を最適化し、SDKの内部オーバーヘッドの一部を回避します。これにより、特に例外が発生する操作ではコストが低減されます。ラッピング設計の基本原則は一貫しており、テストと本番トレーシングの両方でリアルタイムの呼び出しを正確に観察することです。テストテープに送る場合でも、トレーシングバックエンドに送る場合でも、基盤となるメカニズムは変わりません。OpenTelemetryのエクスポートページでは、サンプリングやログ信号統合などの高度な機能の詳細が提供されています。