Cassandra-tools
Cassandra-toolsは、開発時にCassandraの状況を監視するツールです.
どのような設定になっており、どのようなデータが入っているかをURLをコマンドラインや、
ブラウザのアドレスバーに打ち込めば即座に確認できます.
たとえば、
http://localhost:8090/cassandra-tools/show/keyspace/Keyspace1
のように打つと、
{Super1={CompareSubcolumnsWith=org.apache.cassandra.db.marshal.BytesType,
CompareWith=org.apache.cassandra.db.marshal.BytesType, Desc=Keyspace1.Super1
Column Family Type: Super
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@1532fc, Type=Super},
......
Authors={CompareWith=org.apache.cassandra.db.marshal.BytesType, Desc=Keyspace1.Authors
Column Family Type: Standard
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@189c12a, Type=Standard}
}
のようにKeyspace1のカラムファミリの情報が取得できたりします.
また、どのようなKeyspaceが現状あるかだけ知りたい場合は、
のようにすれば、現状存在するKeyspaceを取得できます.
とりあえずこんな感じの機能をT2でさっくり作って見ました.
@Page("/show") public class ShowPage { public ShowPage() { } //for HTTP GET with /cassandra-tools/show/clusterName @GET @ActionPath public Navigation clusterName(@In CassandraClient client) { String clusterName = client.describeClusterName(); return SimpleText.out(clusterName); } //for HTTP GET with /cassandra-tools/keyspace/*the keyspace you want to know here* @GET @ActionPath("/keyspace/{keyspace}") public Navigation keyspace(@Var("keyspace") String keyspace, @In CassandraClient client) { Map<String, Map<String, String>> keyspaces = client .describeKeyspace(keyspace); // TODO iterate and format each. return SimpleText.out(keyspaces.toString()); } //for HTTP GET with /cassandra-tools/keyspaces/ @GET @ActionPath public Navigation keyspaces(@In CassandraClient client) { Set<String> set = client.describeKeyspaces(); // TODO iterate and format each. return SimpleText.out(set.toString()); } //ring information //for HTTP GET with /cassandra-tools/ring/*the keyspace you want to know here* @GET @ActionPath("/ring/{keyspace}") public Navigation ring(@Var("keyspace") String keyspace, @In CassandraClient client) { List<TokenRange> rings = client.describeRing(keyspace); // TODO iterate and format each. return SimpleText.out(rings.toString()); } }
プラグインで補助機能を実装していますが、こんな感じでさっくり書いてます.表示部分は手抜きですが今後ということで.
CassandraClientはthriftのシンプルなラッパーです.今後もうちょい機能は足します.
あ、@Inはt2 0.7で入る簡易インジェクト機能です.
というわけでもうちょっと機能を追加して、githubにでもあげようかと思います.