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とか、レスポンス時間の調整はサービス登録するところで変更すればいいようにしているので、多少汎用性はあるはず。