web-dev-qa-db-ja.com

Cassandraクラスターに属するノードのリストを取得する最良の方法は何ですか?

いくつかのCassandraクラスターを操作するためのスクリプトを作成しています。これらのスクリプトのいくつかには、クラスターの一部であるノードのリストが必要です。

nodetool statusはノードとその現在の状態のリストを出力しますが、必要以上の情報を出力します。例えば:

$ nodetool status mykeyspace
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens  Owns    Host ID                               Rack
UN  10.11.12.13  47.66 KB   1       33.3%   aaa1b7c1-6049-4a08-ad3e-3697a0e30e10  rack1
UN  10.11.12.14  47.67 KB   1       33.3%   1848c369-4306-4874-afdf-5c1e95b8732e  rack1
UN  10.11.12.15  47.67 KB   1       33.3%   49578bf1-728f-438d-b1c1-d8dd644b6f7f  rack1

ノードのリストはIPのみである必要があり(ホスト名は必要ありません)、次のようなクリーンな出力が必要です。

10.11.12.13
10.11.12.14
10.11.12.15

これを行うための最良/最も簡単な方法は何ですか?

これを行うための現在の方法を以下に示しますが、もっと良い方法がある場合は、それを見てみたいと思います。 nodetoolコマンドを使用しない場合でも。

3
Gene

_nodetool status_コマンドはawkとともに使用できます。

_nodetool status | awk '/^(U|D)(N|L|J|M)/{print $2}'
_

ノードに関する情報を含む各行は、ノードのステータスが[〜#〜] u [〜#〜] pまたは[〜#〜] d [〜 #〜] own(^(U|N))の後にノードの状態[〜#〜] n [〜#〜] ormal、[〜 #〜] l [〜#〜] eaving、[〜#〜] j [〜#〜] oining、または[〜#〜] m [〜#〜] oving(_(N|L|J|M)_)。

Apache Cassandra開発者が_nodetool status_コマンドの出力を変更しない限り、これは正常に機能するはずです。

6
Gene