今回は、サーバーのメモりの使用割合の値を取得します。
DBサーバーなどでは、随時RAMにデータがキャッシュされるため、値が高くなる傾向がありますが、
フロント側のapacheのみでのサーバーの場合はこの値が高くなる事はあまりないので、そういう検知を行うことが出来ます。
やりたい事
freeコマンドを実行して、対象の値を計算して割合を取得します。
ソースコード
health-mem.sh
#!/bin/bash
DIR=`dirname $0`
dataFile=$DIR"/servers.list"
while read line
do
if [ -n "${line}" ]
then
echo ${line}"\t: `ssh -no 'ConnectTimeout 3' ${line} free -m | awk '{if($1==\"Mem:\"){total = $2}else if($1==\"-/+\"){data = $3}}END{print int(data/total*1000)/10}'`"
fi
done < $dataFile
解説
1,freeコマンドを-mオプションを付けることで、MB単位での表示を行う
2、"Mem:"の行に対して2カラム目に当たる「total」の値を取得。この値が全体メモリの値になる
3、"-/+"の行が「buffers/cache」になるので、使用メモりの値として取得
4、使用メモり ÷ 全体メモり = メモり使用割合
5、1000を掛けて小数点を切り捨てて10で割ることで小数点1位までのデータとする。
使い方
1、「servers.list」ファイルに対象サーバーを改行区切りでいくつでも保存する。
2、以下のコマンドを叩くだけ(任意位置から叩いてもOK)
$ sh health-mem.sh
192.168.33.1 : 9.3
192.168.33.2 : 35
192.168.33.3 : 45.8
192.168.33.4 : 15.4
192.168.33.5 : 41.4
192.168.33.6 : 12.6
※上記の値は全て「%」です。
2つのソースを比較
サーバー用途によって使用割合が違いますが、あくまでこの値は取得時のモノで、1日の平均値を取得してみてサーバーの性能判定を行うとより正確に判定できると思います。
ちなみに、今回もtimeコマンドでベンチしてみました。
time計測 : 0m2.343s
0 件のコメント:
コメントを投稿