Colete dados de 100 servidores AWS

Colete dados de 100 servidores AWS

Tenho 100 servidores rodando na AWS. Preciso obter facilmente quantos dados cada usuário nos sistemas remotos está usando e enviá-los para um arquivo de texto. Qual a melhor forma de conseguir isso?

Responder1

Você pode usar um shell paralelo comoclustershelloupdsh.

Dessa forma, supondo que você já tenha configurado uma autenticação SSH sem senha em uma máquina central, você poderá executar um comando em cada um dos 100 servidores ao mesmo tempo. Você também pode ir além e fazer vários grupos para organizá-los de forma lógica.

Vamos supor que suas máquinas sejam denominadas aws0, aws1, aws2, ... aws99.

Com o clustershell, você pode executar um comando (tempo de atividade neste exemplo) em todos eles desta forma:

# 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

Você pode executar o comando em um subconjunto deles desta forma

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

Então, se quiser agrupar os resultados idênticos, você pode usar a opção -b de clush ou pipe para dshbak -c com 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

informação relacionada