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, 


