
У меня 100 серверов, работающих на AWS. Мне нужно легко получить, сколько данных использует каждый пользователь на удаленных системах, и вывести их в текстовый файл. Как мне лучше всего это сделать?
решение1
Вы можете использовать параллельную оболочку, такую каккластерная оболочкаилипдш.
Таким образом, предполагая, что вы уже настроили беспарольную аутентификацию SSH с центральной машины, вы можете запустить команду на каждом из 100 серверов одновременно. Вы также можете пойти дальше и создать различные группы, чтобы организовать их логически.
Предположим, ваши машины имеют имена aws0, aws1, aws2, ... aws99.
С помощью ClusterShell вы можете запустить команду (в данном примере uptime) на всех них следующим образом:
# clush -w aws[0-100] uptime
aws0: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws1: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws2: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws99: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
Вы можете выполнить команду для подмножества из них следующим образом:
clush -w aws[22-55,73-82,90,99] uptime
aws22: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws23: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws55: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws73: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws82: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws90: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws99: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
Затем, если вы хотите сгруппировать идентичные результаты, вы можете использовать опцию -b clush или передать ее в dshbak -c с pdsh
# clush -bw aws[0-99] uptime
---------------
aws[0-99] (100)
---------------
21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00