サーバ監視機能

土曜のトラブルを受けて、早速サーバの監視強化対策を考えてみました。

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分以上更新されないことはないので、そのあたりを閾値に。

それに、この仕組み自体が動いているということを知らせるための、日次集計レポートとか送ってみてもいいかも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です