slony-Iのログ運用を試してみたよ
長い間、見て見ぬふりをしていたslony-Iのログでしたが、そろそろ自動で何とかしようかと。
思いたったが吉日。早速、試してみました。
先ず現在は手動で
- slonデーモンを再起動
- 不必要なログを削除
というなんともお粗末なことをしていました。
一度、logrotate.dを試してみましたが、巧くいかず断念。。。
6. Slony-I Maintenance には、apacheのrotatelogsのようなもの使っちゃいなよ!って書いてあるけど、そもそもapache入ってないですお。。。
ということで、今回は別の方法でアプローチを。
コマンド場所の確認
$ which slon_start /usr/local/slony1/bin/slon_start
slonデーモンを再起動すると、ログファイルが新しく作られることは知っていたので、
$ /usr/local/slony1/bin/slon_kill $ /usr/local/slony1/bin/slon_start node no
でログ出力が新しいファイルとなります。
で、1つのシェルスクリプトに。
$ vi rotate_slon_log.sh
/bin/sh # 引数 $1 は slon_start のnode引数です # レプリケーションデーモンストップ /usr/local/slony1/bin/slon_kill $i # レプリケーションデーモンスタート(新しいログファイルが出来ます) /usr/local/slony1/bin/slon_start $1
実行する時は、
$ rotate_slon_log.sh 1
のように使います。
私の場合は、ローテートしたファイルを圧縮する処理を追加しました。
/bin/sh # arg $1 is node no # stop replication log /usr/local/slony1/bin/slon_kill $i # 今まで使っていたログをgzipで圧縮 find /slon_log_dir -name "*.log" |xargs gzip # create new log file /usr/local/slony1/bin/slon_start $1
これを実行。
$ rotate_slon_log.sh 1
$ ll
ry) log-yyyy-mm-dd_hh:mi:ss.log.gz ry) log-2012-02-27_15:53:50.log
をうまくいったようです。
これをcronへ登録
# テストの為、営業時間中に設定 0 14 * * * /bin/sh /script_path/rotate_slon_log.sh [node]
とりあえず、これで様子を見てみます。