redis clusterで全てのサーバを一挙にmonitorする


redisにはmonitor(Redisサーバが受け取ったすべてのコマンドをリアルタイム表示する)という便利コマンドがありますが、1サーバしか指定できません。
redis clusterを組んでいて、全サーバのmonitorをまとめて見たいケースって多いにあると思います。
調べて作ったのでここに残します。

ソース

redis-multi-monitor.sh
#!/bin/bash

trap 'eval "kill -KILL $(jobs -p|tr "\n" " ")"' EXIT
for f in "$@"; do
  IFS=':'
  set -- $f
  redis-cli -c -p $2 -h $1 monitor &
done
wait

※Ctrl+Cで抜けてもゴミプロセスを残しません。後味すっきり。

使い方

$ ./redis-multi-monitor.sh 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
1459331298.605642 [0 127.0.0.1:60922] "set" "aa" "bb"
1459331298.607053 [0 127.0.0.1:7000] "set" "aa" "bb"
↑クラスターはmaster slave構成で作ってあったので2つ出てきます

参考にさせていただいたもの

ご指摘あればよろしくお願いいたし!