QA@IT

Ubuntuで負荷が高かった場合にメールで知らせるには?

3327 PV

現在、桜VPS上のUbuntuでrailsを使ったサーバ運用をしています。
しかし今後運用していく上で、負荷が高い場合はメールで知らせる様なツールを探しています。

具体的には
「sar」コマンドで表示される様な、平均的なCPU使用率やスワップ頻度等が、一定の値を超えた場合にメールで知らせることができればなと思っています。

一応自分なりに実装する方法としては

sar -r > hoge.txt

この様にhoge.txtを作成して、このファイルをrubyで読み込み解析してメールを送信するという方法も無くはないと思うのですが、0から実装するよりは既存のアプリ等があればそれを使いたいと考えています。

何かお気づきの点がございましたら、お返事いただけると幸いです。

回答

どのぐらいの精度でメールが欲しいのでしょうか。というか、外からの観察結果とシステム内からの観察結果の、システム内からの観察結果を欲していますが。

そもそもは、外からサーバがちゃんと動いているか?という外形監視と、内部が正常に動いているかと切り分けが必要ない感じなのでしょうか? ネットワークの不調や、負荷が高すぎて、MTAがまともに動かない or OOM killerで関連するプロセスがぶっ殺されている など中のダメージがそれほどでない場合でしか、sarを使う方法だと動かない気がします。

で、また大変なのが、ドコドコとメールが飛んでくることです。(賢いメール抑制アルゴリズムのあるソフトを使わないと運用担当者は堪ったモノではありません)

こんな時は、外形監視と内形監視の両方から責めるのが常道ですが、そこまで記述されていませんでしたので、ubuntuにインストールするタイプから、既存のサービスを使う方法など、いくつか利点と欠点があります。

運用系の設計をしている担当者と、いちどお話しになってみては? ノードの数や監視項目の数でも変わります。

たたき台としては、 nagios (+NRPE agent) + munin ぐらいと比較対象してみては?

編集 履歴 (0)

シンプルに負荷の監視・通知が目的なら、Monitが定番だと思います。

apt-get install monit

でインストールして、CPUコア2個なら

check system system
    if loadavg (15min) > 2 then alert

みたいな感じで設定していけばいいと思います。

ちなみに、スワップは本格的に発生すると監視システム自体がまともに動かなくなる可能性が高いので、スワップ「しないように」監視するのが基本になると思います。というわけで、

if memory usage > 70% then alert

とか。ただ、さくらVPSだとゲスト環境のswapはただちにdisk直撃とは限らないので、そのあたりはうまく調整してあげる必要があると思います。

編集 履歴 (0)
  • Monit便利ですね。メール通知も問題なくできました。ありがとうございました。 -

Xymon(旧Hobbit)という監視アプリが設定も楽だった記憶があります。
(やっぱ、名前が変わったのは、トールキン財団から文句言われたのかなぁ)

MRTGで監視して、閾値を超えたらメールとかも王道かも?
ただ、MRTGは元々ネットワーク監視とかの為の物なので、
CPU監視とかさせるには、cfg書くのが面倒だった気がする。

編集 履歴 (0)
  • Xymonでggると日本語のリファレンスが出てくるのはありがたいですね。今回は設定の簡単さからMonitを使いましたが、こちらも機会があればつかってみます。 -

ちょっと構築が面倒なのでご参考程度に。

サーバ監視ツールにCactiというのがあります。
http://www.cacti.net/

各種ステータスがグラフ化できるので業務で重宝しています。
Tholdプラグインを使えば閾値でメール通知もできるようです。
(このプラグインは使ったことないので詳しくないです、すみません。)

今回のご要望に対しては多機能すぎるかもしれませんが、
ディスク使用率の増加傾向やトラフィックもわかりますので
多角的な監視がしたい場合はお勧めです。

編集 履歴 (0)
  • phpなどをinstallしなくてはいけないので今回は見送りましたが、グラフ化などは便利ですね。今後機会があれば使ってみたいと思います。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。