從 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

相關內容