Redisのログレベルをオンラインで変更する

概要

Redis稼働中に設定ファイルの書き換え&デーモンの再起動をすることなくログレベルを変更して詳細ログを吐き出す手順です。

現在のログレベル設定を確認

redis-cliで以下を実行することで設定を確認出来ます。

CONFIG GET loglevel


表示例
[tsunokawa@test ~]$ redis-cli 
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "warning"
127.0.0.1:6379> 

現在ログレベルがwarningになっていることが確認出来ます。

ログレベルを変更

CONFIG SETを使ってログレベルをdebugに変更します。

CONFIG SET loglevel "debug"


表示例
[tsunokawa@test ~]$ redis-cli 
127.0.0.1:6379> CONFIG SET loglevel "debug"
OK
127.0.0.1:6379>


再度ログレベルの設定を確認

127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "debug"
127.0.0.1:6379> 

ログレベルがdebugに変更になりました。
これでログファイルにdebugレベルのログが出力されます。

その他の設定

ログレベル以外にも同様の手順でオンラインで設定の変更が可能です。
以下で設定全項目名を確認することが出来ます。

CONFIG GET *


表示例
127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) "/var/log/redis/redis.log"
 11) "pidfile"
 12) "/var/run/redis/redis.pid"
(略)


Redis ClusterのFLUSHALL

概要

Redis Clusterのデータを全て消したい場合、各ノードでFLUSHALLを行う必要があります。

どこか1台のマスターノードでFLUSHALLを実行してもクラスタ内のデータは全消去されず、
redis-cliでアクセスしたサーバーのデータのみ削除されます。

また、クラスタ内の各マスターノードだけで実行してもスレーブがマスター昇格してしまいデータが再同期されてしまいデータが消えることはありません。

そこでマスター/スレーブ両方で同時にFLUSHALLを行うことでデータを削除することが出来ます。

マスター

[root@redis-cluster01 ~]# redis-cli -c
127.0.0.1:6379> FLUSHALL
OK
(18.88s)
127.0.0.1:6379> 


スレーブ

マスターと違ってスレーブはFLUSHALL前にスレーブでもデータの書き換えが出来るよう
CONFIG SET slave-read-only "no"を実行する必要があります。

[root@redis-cluster02 ~]# redis-cli -c
127.0.0.1:6379> CONFIG SET slave-read-only "no"
OK
127.0.0.1:6379> FLUSHALL
OK
(18.88s)
127.0.0.1:6379> 

Zabbix3.0 スクリーン共有設定

Zabbix3.0でスクリーンを作成したところグラフは見られるけどスクリーンは見られないということが起きました。
スクリーンに権限設定は無かったはず。。。
と思っていたらZabbix3.0から共有設定が実装されたようです。


f:id:tsunokawa:20160725135416p:plain
スクリーンを作成する画面から[共有]タブをクリックすることで公開設定が可能です。
全体公開したくない場合は共有するユーザまたはユーザグループも設定可能です。


f:id:tsunokawa:20160725135606p:plain
一度作成したスクリーンも[プロパティ]をクリックすることで設定変更が可能です。


2系から3系にバージョンアップした際に元からあったスクリーンは全体公開設定になっていました。