redis-topの導入

redis-top

Perl勉強メモ アルパカDiary出張版のtoritori0318さんが、Redisの使用状況をtopコマンドのように常時出力するredis-topというツールを作ってくださっていました。私のブログでもKVS(Key Value Store)はRedis2.6を使っています。Redisの使用状況はmuninとZabbixで監視していますが、若干時差があるので、リアルタイムにRedisの状況を調べるのに便利かなと思って、自分のブログにも導入してみました。toritori0318さん、ありがとうございます。

redis-topの導入方法

GitHubのp5-App-RedisTopのREADMEにもざっくり書かれてありますが、まずgit cloneでソースをダウンロードします。

git clone https://github.com/toritori0318/p5-App-RedisTop.git

あとは普通にmakeしてinstallするだけです。

$ cd p5-App-RedisTop/
$ perl Makefile.PL
Writing Makefile for App::RedisTop
Writing MYMETA.yml and MYMETA.json

make
cp lib/App/RedisTop/Component/Memory.pm blib/lib/App/RedisTop/Component/Memory.pm
cp lib/App/RedisTop/Component/CPU.pm blib/lib/App/RedisTop/Component/CPU.pm
cp lib/App/RedisTop/Component/Command.pm blib/lib/App/RedisTop/Component/Command.pm
cp lib/App/RedisTop/Component.pm blib/lib/App/RedisTop/Component.pm
cp lib/App/RedisTop/Component/DB.pm blib/lib/App/RedisTop/Component/DB.pm
cp lib/App/RedisTop/Component/Save.pm blib/lib/App/RedisTop/Component/Save.pm
cp lib/App/RedisTop.pm blib/lib/App/RedisTop.pm
cp lib/App/RedisTop/Component/Connection.pm blib/lib/App/RedisTop/Component/Connection.pm
cp lib/App/RedisTop/Perform.pm blib/lib/App/RedisTop/Perform.pm
cp bin/redis-top blib/script/redis-top
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/redis-top
Manifying blib/man1/redis-top.1
Manifying blib/man3/App::RedisTop.3pm

make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00.compile.t .... ok
t/01.component.t .. ok
All tests successful.
Files=2, Tests=27,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.03 cusr  0.00 csys =  0.05 CPU)
Result: PASS

sudo make install
Appending installation info to /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/perllocal.pod

これで、redis-topコマンドが使えるようになります。CentOS6.3以外にも、openSUSE12.3でもインストールできました。

追記:

最近はもっとインストールが簡単になって、CPAN経由でインストールできるようです。

cpan App::RedisTop

redis-topコマンドの出力

redis-topとコマンドを打って以下のような出力が表示されれば成功です。

redis-top v0.02

               -----cpu----- ----------mem---------- --------conn------- --save- ----------command--------- ------db0------ 
      INSTANCE|   sys    usr|    use     rss    frag|  total/s   clients|changes| total/s   hits/s misses/s|   keys expires|
-------------- ------ ------ ------- ------- ------- --------- --------- ------- -------- -------- -------- ------- ------- 
127.0.0.1:6379|   0.0    0.0| 20.72M  19.19M   0.93 |    1.33         1 |     2 |   1.33        0        0 |    11       0 |

       AVERAGE|   0.0    0.0| 20.72M  19.19M   0.93 |    1.33         1 |     2 |   1.33        0        0 |    11       0 |

         TOTAL|             |                       |    1.33         1 |     2 |   1.33        0        0 |    11       0 |

リアルタイムに使用状況が出力されます。

以前はRedis2.6では、Use of uninitialized value $key in hash element at /usr/bin/redis-top line 319, line 1というワーニングが出ていたのですが、新しいバージョンではワーニングが出なくなりました。toritori0318さん++。これからもredis-topを使い続けます。