Соберите данные со 100 серверов AWS

Соберите данные со 100 серверов AWS

У меня 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

Связанный контент