2013.06.03 Monday
スポンサーサイト
一定期間更新がないため広告を表示しています
スポンサードリンク | - | | - | - | - | - |
lucene-gosen、solrなど。あと、興味のあること。
新ブログに移行中。http://blog.johtani.info
2012.06.15 Friday
・対象とするサービスからScribeでデータを収集し、ZipkinのCollectorに投げる ・CollectorはCassandraにデータを格納 ・WebUIからはQueryでCassandraに問い合わせを行なってデータ取得 ・Scripe、CollectorはZookeeperと連携している(妄想)◯計測用ライブラリ(図はこちら。図のSと書かれた青い箱)
・各ホストの計測用ライブラリがトレースデータを集めてZipkinに送信する。 ・ホストは他のサービスへリクエストを飛ばすときに、リクエストにトレース用のIDを付与してます こうすることで、データをあとで、束ねることが可能となります。◯計測ライブラリの利用方法
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")
リクエストのトレースに利用できるgemもあります。 リクエストに対してトレースIDを生成し、リクエストに付与し、トレーサーにプッシュするのにRackHandlerのgemを利用できます。トレーサをトレースするサンプルはzipkin-webを参照。
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はScala用のSQLデータベースのインタフェースライブラリです。 SQLクエリの実行のタイミング情報をトレースに追加できます。
CassieはFinagleベースのCassandraクライアントライブラリです。 CassieのトレーサーはFinagleの例とほぼ一緒ですが、 CassieではKeyspaceBuilderに設定します。
cluster.keyspace(keyspace).tracerFactory(ZipkinTracer())