\(^o^)/
kumofsは、弊社のフォトストレージサービス Ficia で現在大絶賛モリモリ稼働中なんですが、その死活監視は自家製の Nagios プラグインで行っています。
というわけで、kumofsをサービスで使いたい人の一助になればと思い、ぼくが実際に行っている kumofs の監視について紹介したいと思います。
サーバノードとマネージャノード
サーバノードとマネージャノードの監視には、それぞれのノードに対してステータスを問い合わせるコマンドを発行して、その応答で死活を判断するスクリプトを書いて使っています。
kumofs公開記念ということでgithubにpushっておきました。
問い合わせの処理は、管理用コマンドの kumoctl, kumostat のクラス (KumoRPC, KumoServer, KumoManager) を再利用しているので、check_kumosvr, check_kumomgr 自体のコードは短く済んでいます。こんな感じで、自分専用のモニタプログラムとかも簡単に作れるのではないかと思います。
memcachedプロトコルでのサービス監視
memcachedプロトコルでのゲートウェイ、サーバ、マネージャノードの一気通貫監視には、拙作のcheck_memcached_paranoidを使っています。
このCで書かれたlibmemcacheを使ったプログラムはこのような動作をします:
- 適当なキーとバリューを生成して、SETする
- SETしたキーでGETする
- SETしたバリューと、GETで得られたバリューが異なっていたら CRITICAL なエラー扱いにする。
- SETしたキーでDELETEする
- SETしたキーでGETする
- GETでバリューが得られたら、CRITICAL なエラー扱いにする。
- ここまで問題なければ OK
kumofsは複数の異なる役割のノード群が協調して働くこともあり、単純な「SETできたらOK」ではなく、このように執拗なまでに動作をチェックするプログラムで監視しています。
監視対象とのインターフェースはmemcachedプロトコルなので、FlareやTokyo Tyrantなど、memcachedプロトコルをサポートするkumofs以外のプロダクトに対しても使えるんじゃないかと思います。
enjoy!