taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

nagiosでsocket.ioのレスポンスを監視する

 nagiosのcheck_httpだとhttp通信の監視しかできないので、websocketというか、socket.ioの通信を監視するのはだいぶ厳しいなー、と思ったので、以下のようなスクリプトを作った(当然部分的にボカしてる)。socket.io-clientとoptimistを予めnpm installしておく必要がある。

 んで、/etc/nagios/objects/commands.cfgに以下の記述を加えてコマンドを登録する。

define command{
        command_name    check_node
        command_line    /path/to/socketio_watch.js -h $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -u $ARG3$
        }

 最後に、/etc/nagios/objects/localhost.cfgに記述を加えて監視サービスを追加する。

define service{
        use                             local-service
        host_name                       localhost
        service_description             NODE
        check_command                   check_node!80!500!/
        notifications_enabled           1
        }

 あとはnagiosを再起動すれば、監視対象に加わる。
 予期しないデータ構造が返ってきたり、レスポンス時間が長くなってくると警告出るようにしてるので、だいぶ捗るのではないかと思います。socket.ioのresourceとか、レスポンス時間の調整はサービス登録するところで変更すればいいようにしているので、多少汎用性はあるはず。