Что лучший способ состоит в том, чтобы получить список узлов, которые принадлежат кластеру 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

Списком узлов должен быть дюйм/с только (имена хостов не необходимы), и я хотел бы чистый вывод как следующее:

10.11.12.13
10.11.12.14
10.11.12.15

Что лучший/самый простой путь состоит в том, чтобы сделать это?

Я обеспечу свой существующий метод ниже для того, чтобы сделать это, но если существует лучший способ, которым я хотел бы видеть его. Даже если это не использует nodetool команда.

3
задан 2 September 2015 в 10:47
1 ответ

Вы можете использовать команду nodetool status с awk :

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

Каждая строка, содержащая информацию об узле, будет начинаться с состояния узел является U p или D собственным ( ^ (U | N) ), за которым следует состояние узла, являющееся N нормальным , L свинг, J oining, или M овинг ( (N | L | J | M) ).

Пока разработчики Apache Cassandra не изменяют вывод команды nodetool status , все должно работать нормально.

6
ответ дан 3 December 2019 в 05:24

Теги

Похожие вопросы