概要
- redis のリソースをモニタするスクリプトを ruby の勉強を兼ねて書いてみた
- 既にちゃんと perl で実装されているので、業務等の現場で利用する場合にはそちらを利用しようと思う
- 対象となる項目は下記のとおり
モニタする対象
モニタする対象は INFO
コマンドで取得出来る値の中から以下を選択。
項目 | メモ |
---|---|
connected_clients | 接続中のクライアント数 |
used_memory | 使用中のメモリ量 |
total_connections_received | 接続された累積数 |
total_commands_processed | 実行されたコマンドの累積数 |
mem_fragmentation_ratio | メモリのフラグメント状況 |
上記を選択したネタ元はこちら。
irb コマンドで確認する
まずは irb
コマンドで INFO
コマンドからどのような値が取れるのかを確認してみる。
スクリプト
github はこちら。
未だにクラス、メソッドの使い方が半信半疑で自信無し。
使い方
必要な gem のインストール
sudo gem install terminal-table --no-ri --no-rdoc -V sudo gem install redis --no-ri --no-rdoc -V sudo gem install hiredis --no-ri --no-rdoc -V
次期バージョンを見据えてと思って、うっかり ncursesw
とか parallel
も入れておいた。
対象ホストリストの準備
まず、以下のようにモニタリングの対象となるホストとポート番号をカンマ区切りで記載する。
xxx.xxx.xxx.xxx,6379 xxx.xxx.xxx.xxx,6380
実行
上記でホストリスト作成したら、ホストリストを引数としてスクリプトを実行する。
./get-redis-info.rb config.txt
以下のような実行結果が出力される。
watch コマンドとの併用
少しでもリアルタイムにということで watch
コマンドを併用することで、それらしいことが出来る(と思う)。
watch ./get-redis-info.rb config.tx
複数ホストに対して順次 redis.info
を実行しているので厳密なリアルタイム性には掛けるかもしれないけどとりあえず雰囲気的にはイケそう。
次の目標
ということで、作って試してブログにしたあたりで色々と課題も見えてきたので、次のバージョンの目標みたいなものを書いてみる。
- 取得出来るパラメータを選択可能、もしくは引数で指定することで任意のパラメータを監視出来るようする
- ホストリストを
yaml
形式で書けるようにする parallel
を利用して並列にredis.info
を実行してリアルタイム性を追求するwatch
コマンドとの併用ではなくコマンド単体でwatch
コマンドを使ったような表示を実現する