コンテンツに移動
Google Cloud

Stackdriver Trace + Zipkin : 分散トレースとパフォーマンス分析をすべての人に

2017年1月19日
Google Cloud Japan Team

編集部注 : Zipkin トレーサーで Stackdriver Trace を使えるようになりました。こちらから始めることができます。

Google Cloud Platform(GCP)が果たすべき約束の 1 つは、わたしたちが Google スケールのシステムを動かすために利用しているツールとテクノロジーを、他のデベロッパーの方にも使えるようにすることです。そのようなツールの 1 つ Stackdriver Trace は、Google での Dapper という分散トレース システムの進化によるものです。アプリケーションのレイテンシを分析してパフォーマンスを落としている原因をすばやく特定できるようにします。

Stackdriver Trace は、もともとは Google App Engine プロジェクトだけをターゲットとしていましたが、現在では仮想マシンやコンテナ上で稼働しているアプリケーションもサポートしています。これらは Node.jsJavaGo 用のインストゥルメンテーション ライブラリ(Ruby、.NET サポートも近くリリース)、または API を使うことで利用できます。

Stackdriver Trace はすべてのプロジェクトで無料で利用できます。インストゥルメンテーション ライブラリは制限の少ないオープンソース ライセンスのもとで提供されています。

Stackdriver Trace 以外の分散トレース システムとしては、Twitter が 2012 年にオープンソース化した Zipkin も人気があります。Zipkin はトレースを格納し、ウェブ インターフェースで表示するバックエンド システムに加え、アプリケーションからトレースをキャプチャするためのインストゥルメンテーション ライブラリを豊富に取り揃えています。分散サービスのパフォーマンスを表示、診断するツールとして、世界中の企業で広く利用され、Twitter のほかにも Yelp や Salesforce が主要なコントリビューターとなっています。

Zipkin のユーザーには Stackdriver Trace との相互運用を求める声があり、それに応えるために、今回 Zipkin 互換クライアントから Stackdriver Trace に分析用のトレースを送信できるようにする Zipkin サーバーをリリースしました

このリリースは、Stackdriver Trace で正式にサポートされていない言語やフレームワークで開発しているアプリケーションのデベロッパーにも、Zipkin を既に導入しているアプリケーションで Stackdriver Trace の高度な分析ツールを使いたい方にも恩恵をもたらします。コードは、GitHub 上で制限の少ないオープンソース ライセンスでリリースし、すぐにセットアップできるようにコンテナ イメージも公開しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/stackdriver-zipkin-1ubpy.max-700x700.PNG

図のように  Stackdriver Trace Zipkin Collector は、既存の Zipkin バックエンドの代わりに使えるドロップインで、これまでと同じ Zipkin 互換トレーサーを使い続けられるように作られています。これまでのように Zipkin バックエンドのセットアップや、管理、メンテナンスを行う必要はなくなり、代わりに Zipkin トレーサーを利用する個々のサービスに対し新しいコレクタを実行します。

今のところ Zipkin クライアントには、Java、.NET、Node.js、Python、Ruby、Go 用があり、一般的なウェブ フレームワークとのインテグレーションが組み込まれたのものもあります。

セットアップの方法

分散トレーサーからトレース データを収集する方法については、こちらのドキュメントをご覧ください。まだトレーサー クライアントを利用していないなら、人気の高い Zipkin トレーサーのリストから適切なものを選べます。

FAQ

Q : Stackdriver Trace は使いたいけれど、使用言語がサポートされていませんでした。今回のリリースで何か変わりますか?

その言語やフレームワークを Zipkin トレーサーがサポートしていれば、トレーサーから Stackdriver Trace Zipkin Collector にデータを送るように設定するだけで、Stackdriver Trace を使えるようになります。

Q : Zipkin を利用しています。今回のリリースで何ができるようになりますか?

ぜひ Stackdriver Trace Zipkin サーバーをセットアップして、既存の Zipkin バックエンドと一緒に、あるいは Zipkin バックエンドの代わりに使ってみてください。

Stackdriver Trace は、Zipkin トレーサーで収集したトレース データを表示するだけでなく、Insights and Latency Reports のような高度な分析ツールでデータを操作できます。また、Stackdriver Trace は Google によってホスティングされているため、トレースの収集や表示を行うにあたって独自のバックエンド サービスをメンテナンスする必要はありません。

https://storage.googleapis.com/gweb-cloudblog-publish/images/T4X8X7mTk1lqOPoiGXedYBH-h2C1vCHoepQsZUMcOk.max-1100x1100.PNG

レイテンシーのレポートは、Stackdriver Trace 利用者の誰でも利用できます。

Q : Stackdriver Trace Zipkin Collector に制約はありますか?

今回のリリースには下記に示す 2 つの制約があります。

  1. Zipkin トレーサーは、Zipkin の時刻と期間の正しいセマンティクスをサポートしている必要があります。
  2. Zipkin トレーサーと Stackdriver Trace のインストゥルメンテーション ライブラリの両方から、同じトレースにスパンを追加することはできません。これは、一方のライブラリでキャプチャされたトレースに、もう一方のライブラリが導入されているサービスのスパンが含まれることはないということです。
    以下に例を示します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/stackdriver-zipkin-2poz0.max-1100x1100.PNG

図の Node.js Web Application へのリクエストは、Zipkin ライブラリでトレースされて Stackdriver Trace に送信されます。ですが、これらのトレースには、ASP.NET API Application で生成されたスパン、あるいはそこからデータベースへの RPC コールに対して生成されたスパンは含まれません。これは、サービス間でトレース コンテキストを伝える形式が、Zipkin と Stackdriver Trace で異なるためです。

そのため、Stackdriver Trace を使用するプロジェクトでは、Zipkin 互換トレーサーを Zipkin Collector と組み合わせて使用するか、Stackdriver Trace とネイティブに対応しているインストゥルメンテーション ライブラリ(Node.jsJavaGo 用の公式ライブラリなど)を使用するかのどちらかだけにすることをお勧めします。

Q : このサーバーは完全な Zipkin サーバーとして使用できますか?

いいえ。この最初のリリースでサポートされているのは書き込みオペレーションだけです。読み込みオペレーションを追加すると便利だと考えるならお知らせいただくか、GitHub でプル リクエストしてください。

Q : Stackdriver Trace の料金はいくらですか?

Zipkin と Stackdriver Trace は無料で利用できます。

Q : Stackdriver Trace は、AWS、オンプレミス、ハイブリッドの各アプリケーションの分析に使用できますか? それとも、GCP で実行されているサービス専用ですか?

すでにいくつかのプロジェクトがそのような使い方をしています。Stackdriver Trace は、サービスがどこにホストされているかに関わらず、Stackdriver Trace インストゥルメンテーション ライブラリや Zipkin Collector  から収集されたトレースとスパンを含む、API を使用して送信されたすべてのデータを分析します。

終わりに

私たち Stackdriver チームは、この場をお借りして、Zipkin オープンソース プロジェクトの Adrian Cole 氏に深い感謝の意を表したいと思います。同氏の熱意、技術的な助言、設計へのフィードバック、リリース プロセスでの支援はとても貴重なものでした。

私たちは、今回 Zipkin と共同で取り組んだ作業と同様のコラボレーションを他のオープンソース プロジェクトにも広げていきたいと考えています。また、この機能を開発した Stackdriver チームのデベロッパーにも感謝しています。

Stackdriver Trace インストゥルメンテーション ライブラリと同様、Zipkin Collector は Apache ライセンスに基づき、GitHub で公開されています。問題点の指摘や変更案のプル リクエストなどをお待ちしています。

* この投稿は米国時間 12 月 27 日、Stackdriver Trace の Product Manager である Morgan McLean によって投稿されたもの(投稿はこちら)の抄訳です。

- Posted by Morgan McLean, Product Manager for Stackdriver Trace

投稿先