OpenTelemetry
OpenTelemetryは、複数のプロセス、システムをまたがってアプリケーションの処理を追跡する分散トレースの仕組みを提供するフレームワークです。収集した情報から、通信の流れを把握し、統計情報(メトリクス)によってボトルネックや問題のプロファイリングを行えます。
サイト
https://opentelemetry.io/
Python用の配布コード
https://github.com/open-telemetry/opentelemetry-python/releases
2021/02/13 v1.0.0rc1
2021/03/27 v1.0.0
2021/04/20 v1.1.0
2021/05/12 v1.2.0
Django
Django + OpenTelemetry
背景
2019/03/29: OpenTracingとOpenCensusのマージが発表された
OpenTelemetry 進捗 2019年6月版 / OpenTelemetry Current Status June 2019 #opencensusjp - Speaker Deck
2020/10/05: https://www.cncf.io/blog/2020/10/05/building-the-opentelemetry-ecosystem/
OpenTelemetry が成長して成熟するにつれ、オブザーバビリティやモニタリングツールが、クラウドネイティブソフトウェアから遠隔測定データを作成して収集するための最良の方法として OpenTelemetry にコンセンサスを得て、より多くのディストリビューションが登場することになると思います。プロプライエタリなエージェントや互換性のないプロトコルの時代は過ぎ去り、オブザーバビリティのニーズに高品質のオープンソース計測器を採用する実践者が増えています。OpenTelemetryプロジェクトは、このような貢献にスポットライトを当て、エンドユーザーが必要な統合機能をレジストリから見つけられるようにしています。
2021/08/26 https://www.cncf.io/blog/2021/08/26/opentelemetry-becomes-a-cncf-incubating-project/
OpenTelemetry becomes a CNCF incubating project | Cloud Native Computing Foundation
資料
OpenCensus/OpenTelemetry meetup vol.2 - 資料一覧 - connpass
OpenCensus(OpenTelemetry)とは | フューチャー技術ブログ
OpenTelemetry 進捗 2019年6月版 / OpenTelemetry Current Status June 2019 #opencensusjp - Speaker Deck
ドキュメントの入り口
Getting Started with OpenTelemetry Python — OpenTelemetry Python documentation
TraceProviderにSpanProcessorをくっつけて、SpanProcessorからConsoleSpanExporterでコンソールに出力
consoleにspanの情報(生JSONデータ)が出力される
jaegerへexportする例
JaegerのDockerを立てて確認する手順
JaegerExporterでJaegerにエクスポートする
OpenTelemetry Collector を使ってTRACE情報をブリッジする手順
opencensus-exporter-tracer を流用してとりあえず動作確認できる
opentelemetry-python の docs/examples に例がいくつか
アーキテクチャ
https://opentelemetry.io/docs/concepts/instrumenting/
OpenTelemetry Collectorを使わない場合
App -> Jaeger等のExport先
各AppにExport先を直接指定するため、Export先が変更になったら全てのAppの修正が必要
各AppがOTELプロトコルではなくExport先のフォーマットに変換する必要がある
OpenTelemetry Collectorを使う場合
App -> OpenTelemetry Collector -> Jaeger 等のExport先
各AppはOTELプロトコルだけ話せれば良い
Export先を変更した場合、OpenTelemetry Collectorから先だけ変更すれば良い