土曜のトラブルを受けて、早速サーバの監視強化対策を考えてみました。
pingとhttpについては既に監視サービスを利用しているので、今回対策したいのはこのあたり。
- Load Average
- Cpu使用率
- ディスク使用率
- メモリ使用率
- 最新投稿状況
これらの情報を各サーバ毎に定期的にチェックして、異常があれば自分を含めた周辺のケータイにアラートメールを送ることにしました。
まず、サーバの情報をチェックしてXMLで出力するスクリプトを用意しました。
<?xml version=”1.0″ encoding=”utf-8″ ?>
– <ServerStatus>
<Version>1.0</Version>
<ServerIp>***.***.***.***</ServerIp>
<DateTime>1227539547</DateTime>
– <Top>
<Status>0</Status>
<LoadAverage>0.17</LoadAverage>
<CpuUs>4.3%</CpuUs>
<CpuSy>0.9%</CpuSy>
<CpuId>94.6%</CpuId>
</Top>
– <Df>
<Status>1</Status>
<Size>47G</Size>
<Used>15G</Used>
<Avail>30G</Avail>
<UsePer>33%</UsePer>
</Df>
– <Vmstat>
<Status>0</Status>
<ProcsR>0</ProcsR>
<ProcsB>0</ProcsB>
</Vmstat>
– <Free>
<Status>0</Status>
<Total>4141624</Total>
<Used>343772</Used>
<Free>3797852</Free>
</Free>
</ServerStatus>
これを、ガソリンサイトの各サーバに配置しました。
そして、相互のサーバに相手のXMLの値をチェックするスクリプトを設置。チェック内容はざっとこんな感じ。
- XMLが正常に取得できたか
- DateTimeが最新か
- LoadAverageが1/cpuを超えてないか
- ディスク容量(available)は**G以上あるか
- メモリ容量(Free)は***M以上あるか
これをcronで5分毎に実行して、ひとつでも値から外れたら予め用意したML宛にアラートメールを送信。取得したXMLの値をDBに保存しといて、グラフ化してみるのも面白いかも。
それと、実際に価格投稿がまわっているか(なんかの原因で機能が死んでないか)を見るために、WEBサーバにはもうひとつスクリプトを置いてみました。
<?xml version=”1.0″ encoding=”utf-8″ ?>
– <ContentsCheck>
<Version>1.0</Version>
<DateTime>1227539519</DateTime>
– <LastEntry>
<PriceInfo>1227539460</PriceInfo>
<StandRally>1227537858</StandRally>
<GogoNavi>1227539150</GogoNavi>
</LastEntry>
– <WebService>
<PriceApi>157</PriceApi>
<BlogParts1>OK</BlogParts1>
<BlogParts2>OK</BlogParts2>
</WebService>
</ContentsCheck>
これで、各機能の最終投稿日時やAPI、ブログパーツの様子をチェック。異常があれば同じようにMLにメール送信します。例えば、価格投稿は(昼間であれば)5分以上更新されないことはないので、そのあたりを閾値に。
それに、この仕組み自体が動いているということを知らせるための、日次集計レポートとか送ってみてもいいかも。
コメントを残す