2

サーバー ファームで実行されるアプリケーションに必要なサーバー ファームのいくつかの側面を監視したいと考えています。

基本的に、私は各マシンにファイルを探しています.httpを介して(VLAN上で)アクセスすると、curlを使用して、私が探している情報を吐き出し、ループ内にあるdameonを使用してデータベースにログインできます。すべてのサーバーの状態を 1 つずつチェックします。

私が取得しようとしている情報は

<load>server load</load>
<free>md0 free space in MB</free>
<total>md0 total space in MB</total>
<processes># of nginx processes</processes>
<time>timestamp</time>

それを行う最良の方法は何ですか?

編集: 私たちは cacti と opennms を使用していますが、ここで探しているのは、これらのサーバーで実行されるアプリケーションに必要なデータです。いくつかのLinuxコマンドで取得できるこの基本データを取得するために、サードパーティのソフトウェアに依存することで複雑にしたくありません。

4

1 に答える 1

2

次のようなcronエントリを作成します。

  • 数分ごとに(または任意の頻度で)シェルスクリプトを実行します
  • Webサーバーによって公開されているディレクトリに出力を保存します

あなたのテキストが文字通りあなたが望むものであると仮定すると、これはあなたにそこへの道の90%を得るでしょう:

#!/usr/bin/env bash

LOAD=$(uptime | cut -d: -f5 | cut -d, -f1)
FREE=$(df -m / | tail -1 | awk '{ print $4 }')
TOTAL=$(df -m / | tail -1 | awk '{ print $2 }')
PROCESSES=$(ps aux | grep [n]ginx | wc -l)
TIME=$(date)

cat <<-EOF
<load>$LOAD</load>
<free>$FREE</free>
<total>$TOTAL</total>
<processes>$PROCESSES</processes>
<time>$TIME</time>
EOF

サンプル出力:

<load> 0.05</load>
<free>9988</free>
<total>13845</total>
<processes>6</processes>
<time>Wed Apr 18 22:14:35 CDT 2012</time>
于 2012-04-19T03:32:40.950 に答える