# OpenTracing Processor (OTP)
[[Andre Bento]] らが [[@2021__J Grid Computing__Automated Analysis of Distributed Tracing - Challenges and Research Directions]] で発表した、OpenTracing 形式の分散トレースから「自動分析できる高次の派生データ」を生成する OSS ツール。GitHub に andrepbento/OpenTracingProcessor として公開された(URL: https://github.com/andrepbento/OpenTracingProcessor)。
## 入出力
- **入力**: [[OpenTracing]] 標準に従う span(Zipkin バックエンド経由)。
- **出力**: 時系列 DB([[OpenTSDB]])に書き込む派生メトリクス。下流で Data Analyser(Isolation Forest)に流す。
## 抽出する派生データ
指定時間区間あたりに以下を計算(§3.1):
- サービスごとの incoming/outgoing 呼び出し数
- サービスごとの平均応答時間
- サービス近傍の変化(incoming/outgoing 両方の依存関係の追加・削除)
論文は他にも service connection degrees・サービス数の時間推移・服役 / 退役 サービス数推移を取り出せるが、対象 dataset では有用性が低かったため使わなかったと記す。
## 実装
- **trace 再構築**: 既存トレーシングバックエンドは span のみエクスポートし trace の再構築は利用者任せ。OTP は Java Streaming API で並列化して span → trace tree 化を実装。
- **dependency graph**: [[NetworkX]](Python のグラフ処理ライブラリ)で抽出・処理。
- **時系列ストア**: [[OpenTSDB]]、可視化は [[Grafana]]。
- **下流**: 別ツールの Data Analyser(Python + Jupyter Notebook + Pandas + Scikit-learn の Isolation Forest)で外れ値検出([[異常検知]])。
## 関連
- ソース: [[@2021__J Grid Computing__Automated Analysis of Distributed Tracing - Challenges and Research Directions]]
- 開発者: [[Andre Bento]](corresponding author)
- 関連基盤: [[OpenTracing]] / [[OpenTSDB]] / [[Grafana]] / [[NetworkX]]
- 関連概念: [[分散トレーシング]] / [[異常検知]] / [[トレース品質]]
## 出典
- [[@2021__J Grid Computing__Automated Analysis of Distributed Tracing - Challenges and Research Directions]] §3.1・§3.2、脚注 1
- GitHub: https://github.com/andrepbento/OpenTracingProcessor