<< autoGeneratePhraseQueriesのデフォルト値について | top | ZipkinのReadme読んでる(その2、残り) >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - | - | - |

ZipkinのReadmeを読んでる(クライアント周りについて)

ZipkinのGithubにあるReadmeを読んでます。
せっかくというか、頭が悪いので読みながら内容をメモ。
まずは、アーキテクチャとトレースデータ送信のためのクライアント側あたりです。
(誤訳とかおかしいだろというツッコミ大歓迎です。)
あとで、リンク貼ったり絵を入れたりするかもしれませんが、とりあえず。

◯アーキテクチャ(図はこちら
 ・対象とするサービスからScribeでデータを収集し、ZipkinのCollectorに投げる
 ・CollectorはCassandraにデータを格納
 ・WebUIからはQueryでCassandraに問い合わせを行なってデータ取得
 ・Scripe、CollectorはZookeeperと連携している(妄想)

◯計測用ライブラリ(図はこちら。図のSと書かれた青い箱)
 ・各ホストの計測用ライブラリがトレースデータを集めてZipkinに送信する。
 ・ホストは他のサービスへリクエストを飛ばすときに、リクエストにトレース用のIDを付与してます
  こうすることで、データをあとで、束ねることが可能となります。

◯計測ライブラリの利用方法
 ・Finagle
  JVMのための非同期ネットワークスタックである。
  それは、JVMベース言語(JavaやScalaなど)で非同期RPCのクライアント・サーバを構築するのに利用できる。
 
 FinagleはTwitterの内部ですごく利用されていて、トレースサポートを実現するのに当然のポイントです。
 現時点で(Finagleは)ThriftやHTTP、Memcache、Redisのクライアント・サーバサポートも持っています。

 ScalaでFinagleサーバをセットアップするのはつぎのようなコードになります。
 トレースを追加するには、finagle-zipkinを追加して、ServerBuilderのtraceFactory関数を呼ぶだけです。
ServerBuilder()
  .codec(ThriftServerFramedCodec())
  .bindTo(serverAddr)
  .name("servicename")
  .tracerFactory(ZipkinTracer())
  .build(new SomeService.FinagledService(queryService, new TBinaryProtocol.Factory()))
 クライアント側も同様です。
 上記のようにサンプリングしたリクエストにZipkinトレーサーを指定することで
 自動的にトレースできるようになります。
 サービスやホストでのリクエストの開始と終了を記録できます。

 さらに付加的な情報を記録したい場合は、つぎのようなコードを追加します。
Trace.record("starting that extremely expensive computation")

 上記コードは、上記コードが実行された時間に文字列を付加できます。
 キーバリュー情報を付加したい場合は次のようになります。
Trace.recordBinary("http.response.code", "500")

 Ruby Thrift
 リクエストのトレースに利用できるgemもあります。
 リクエストに対してトレースIDを生成し、リクエストに付与し、トレーサーにプッシュするのにRackHandlerのgemを利用できます。
 トレーサをトレースするサンプルはzipkin-webを参照。

 Rubyからトレースクライアントをコールするのに、Twitter Ruby Thrift clientを使います。
 つぎのようなコードを書きます。
client = ThriftClient.new(SomeService::Client, '127.0.0.1:1234')
client_id = FinagleThrift::ClientId.new(:name => "service_example.sample_environment")
FinagleThrift.enable_tracing!(client, client_id), "service_name")

 Querulous
 QuerulousはScala用のSQLデータベースのインタフェースライブラリです。
 SQLクエリの実行のタイミング情報をトレースに追加できます。

 Cassie
 CassieはFinagleベースのCassandraクライアントライブラリです。
 CassieのトレーサーはFinagleの例とほぼ一緒ですが、
 CassieではKeyspaceBuilderに設定します。
cluster.keyspace(keyspace).tracerFactory(ZipkinTracer())

とりあえず、ここまで。

2012/06/22 リンクを貼って体裁を修正
johtani | Zipkin | 09:57 | comments(0) | trackbacks(0) | - | - |

スポンサーサイト

スポンサードリンク | - | 09:57 | - | - | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus) (JUGEMレビュー »)
大谷 純,阿部 慎一朗,大須賀 稔,北野 太郎,鈴木 教嗣,平賀 一昭
Solr 4系に対応した改訂版を出しました!興味ある方はぜひ。
RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
RECOMMEND
RECENT COMMENT
  • ポモドーロ回してます。(ポモドーロテクニック入門読みました)
    おーたに (05/07)
  • Lucene 4.3.0のChangesにあるChanges in backwards compatibility policyが気になったので訳してみた。
    おーたに (04/26)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/04)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    m_nori (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    ho4kawa (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    まろか (09/03)
  • Lucene/Solr 3.6.0リリース / 「Apache Solr入門」のサンプルのKuromojiとlucene-gosen対応(1章)
    おーたに (08/07)
  • Lucene/Solr 3.6.0リリース / 「Apache Solr入門」のサンプルのKuromojiとlucene-gosen対応(1章)
    moco (08/07)
RECENT TRACKBACK
MOBILE
qrcode
OTHERS