分散トレーシングシステム Zipkinの概要紹介
2020年09月02日
ZipkinはTwitter社が開発したオープンソースの分散トレーシングシステムである。
Zipkinのできこと
1.Zipkinは、ネットワーク的に分散した一連のAPIコールのタイミング情報を収集し、可視化・分析するためのシステムです。Zipkinを導入したシステムでは、リクエスト単位でAPIのコールパスを可視化することができます。
2.Zipkinで可視化できるのは同期的なRPCだけではありません。
3.MQを介して非同期的に実行されるプロデューサー・コンシューマー型の処理も可視化できます。
分散トレーシングの原理
リクエストから発生する一連のAPIのコールパスは、ツリー構造を形成します。
Zipkinでは、このコールパス全体に一意の「TraceID」を、ツリーのノードにあたる各APIコールに一意の「SpanID」をそれぞれ発行します。
また、ノード間の親子関係を把握するため、各SpanIDはその親のSpanIDと共に記録されます。
例として、
1.リクエスト自体にTrace ID=1000が発行されます。
2.Server1、Server2への通信にはそれぞれSpanID=100、SpanID=200が発行されています。
3.SpanID=200は、SpanID=100によって引き起こされたため、SpanID=200のParent SpanIDは100になっています。
つまり、
CLIENT: Request———-TRACEID=100—————–Response
↓ ↑
SERVRE1: ↓ ———SpanID=100————↑
↓ ↑
SERVRE2: ↓ —SpanID=200—↑
Zipkinサーバサイドの構成
Zipkinのサーバサイドは、以下の4つのサーバから構成されます。
※DockerImageがあり、DockerContainerとして、直ちに利用可能。
zipkin-collector: http トレースデータを受信する
zipkin-query: トレースデータの検索機能を提供する
zipkin-web: 可視化Web UIを提供する
zipkin-storage:トレースデータの格納(Cassandra、HBase、Redis、RDB(MySQL等)などから選択可能)
zipkinにデータ収集には
トレースデータをZipkinに集約するには、サービス間のRPCスタックにトレースデータの送信処理を組み込む必要があります。以下のzipkin-clientを利用できます。
・Finagle:同じくTwitter社が開発しているScala製のRPCフレームワークで、
Zipkinへのトレースデータ送信機能が組み込まれています。
・HTrace:Cloudera社が開発しているJavaベースのトレーシングライブラリで、特定の分散トレーシングシステムに依存しない汎用的な作りになっていますが、Zipkinへの送信機能も提供されています。
結論
マイクロサービスの利用はますます増えている一方、分散トレーシングシステムもますます重要になってきます。
適切なツールがあれば、効率が倍増になります。
参照:https://engineering.linecorp.com/blog/detail/48/
弊社提供している業務の概要紹介:
弊社はiot、bigdata関連ソリューションを提供しております。詳細技術文書は後続追加掲載させて頂きます。
iot関連紹介:https://mbpsmartec.co.jp/product/
bigdata関連紹介:https://mbpsmartec.co.jp/solution/
弊社はintra-mart社のベンダーです。intra-martプラットフォーム関連ソリューションのご提供は、長年続けております。
業界初Intra-mart + IoT + BIGDATA + モバイル端末対応:
https://mbpsmartec.co.jp/si-service/