从 100 个 AWS 服务器收集数据

从 100 个 AWS 服务器收集数据

我有 100 台服务器在 AWS 上运行。我需要轻松获取远程系统上的每个用户正在使用多少数据并将其输出到文本文件。我怎样才能最好地完成这个任务?

答案1

您可以使用并行 shell,例如集群外壳或者PDSH

这样,假设您已经从中央计算机设置了无密码 SSH 身份验证,则可以同时在 100 台服务器中的每台服务器上运行命令。您还可以更进一步,进行各种分组,以便将它们逻辑地组织起来。

假设您的计算机名为 aws0、aws1、aws2、... aws99。

使用 clustershell,您可以通过以下方式在所有这些设备上运行命令(本示例中为正常运行时间):

# 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

然后,如果要将相同的结果分组,可以使用 clush 的 -b 选项或使用 pdsh 管道 dshbak -c

# 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

相关内容