sensuの基本機能
sensuがやっていることは、すべてのサーバーをチェックし、その結果から特定のイベントを発生させ、イベントハンドラに送るということである。チェックデータは、exitステータスを伴って標準出力または標準エラーに出力すればよい。exitステータスは、0=OK、1=Warning、2=Critical、3以上=未定義またはユーザー定義となっている。
sensuはNagiosと違い、クライアントのコレクションに対してもチェックを実行できるという。各クライアントには、サブスクリプションリストという形で名前やサービスの種類、役割などを記述する。この機能によって、1つのチェックリクエストで、複数のサーバー、特定のサーバー群などに対して一斉にチェックできる。つまりチェックのオーケストレートが可能ということだ。
イベントはどのように生成されるのだろうか。すべてのチェックリクエストのexitステータスは検査され、非0か、それは最初に発生したものか継続しているexitステータスか、メトリック値か、といったことが判別される。これらの検査によってイベントが生成される。
イベントハンドラの起動・記述は自在
イベントハンドラは、標準入出力によるパイプ、TCP/UDPのソケット、AMQP、Setなどによってチェック結果のイベントを受け取り、それに対するアクションを定義・記述する。ここで、Poter氏は、簡単なRubyスクリプトをスライドで紹介し、パイプチェックでイベントを受け取りメールを送信するやり方を説明した(写真)。
もちろん、メールを送るだけでなくさまざまなハンドラを記述できる。クラウドサービスも利用可能なので、TwilioのようなテレフォニーAPIサービスを利用して、イベントに応じた電話を発信したりショートメッセージを送信することもできる。ストレージサービスやログサービスなどと接続してもよい。



