100 台の AWS サーバーからデータを収集する

100 台の AWS サーバーからデータを収集する

AWS で 100 台のサーバーを実行しています。リモート システム上の各ユーザーが使用しているデータの量を簡単に取得し、テキスト ファイルに出力する必要があります。これを最も効果的に実現するにはどうすればよいでしょうか。

答え1

次のような並列シェルを使用することができます。クラスタシェルまたはpdf

この方法では、中央マシンからパスワードなしの 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

次に、同一の結果をグループ化したい場合は、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

関連情報