[Server] サーバー管理ツールを作る #3「メモリ使用値の取得」

2015年5月12日

サーバー プログラミング 特集

今回は、サーバーのメモりの使用割合の値を取得します。 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

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ