分散トレーシング
概要
最近は、複数のサービスが互いに連携し合う形態が増えている
多くのサービスやマイクロサービスに依存したアプリケーションのアーキテクチャを分散システムと呼ぶ
分散トレーシング (Distributed Tracing) は、アプリケーションへのリクエストの結果起こる動作のトラッキングを行うプロセスのこと。以下が特徴
複雑なシステム間を辿ったリクエストパスをトレースする
パス内のコンポーネントのレイテンシーを発見する
パス内のどのコンポーネントがボトルネックになっているのかを知る
歴史
関連ソフトウェア/ツール
たぶんクライアントとライブラリが混在しているのであとで分ける。
Zipkin
概要
分散トレーシングシステム。
アーキテクチャ
Reporter : ログを送信する。
Collector : ログを収集する。HTTP, Kafka, RabbitMQ, Scribe がサポートされている
Storage : ログを永続化する。In-Memory, MySQL, Cassandra, Elasticsearch がサポートされている
API : Storage から様々な方法でデータを抽出する
UI : ログの検索、可視化を行える
https://zipkin.io/public/img/architecture-1.png
Jeager
概要
分散トレーシングシステム。
アーキテクチャ
Agent : UDP 経由で Span を送信するネットワークデーモン
Collector : agent から trace を受け取る。Storage には Cassandra, Elasticsearch, Kafna がサポートされている
https://www.jaegertracing.io/img/architecture.png
AWS X-Ray
概要
分散アプリケーションの分析、デバッグ用サービス
アーキテクチャ
EC2, ECS, Lambda, Beanstalk で実行されているアプリケーションに利用可能
アプリケーションに X-Ray SDK を組み込み、環境にエージェントをインストールする
Beanstalk では事前にインストール済み
OpenCensus
概要
メトリクス収集、分散トレーシング のためのライブラリ群。データの収集までを担い、グラフ化や分析は他のサービスを利用する。Google が車内で利用しているメトリクス収集、トレーシングのライブラリ集 Census の OSS バージョンとして2018/1 にリリースされた。 その他参考
StackDriver Trace
概要
GCP 用の分散トレーシングシステム
NewRelic
必須項目
APM Pro のサブスクリプション
APM のバージョン
設定方法
このままだと、当然ながら Resolver 毎の値はとれない
NewRelic APM 分散トレーシング
参考ポスト
NewRelic の分散トレーシングの仕組み
カスタムで追加する場合
なんか色々追加するようだが、よくわからない
追加のためのサンプルコード
newrelic ようの apollo
参考サイト