2013-06-03 mongodb
MongoDB のログローテイトについては公式サイトにちゃんと書かれているから好きな方法を使えばいい。
ここでは一番手っ取り早い「killall -SIGUSR1 mongod」を使うことにする。手順はざっと以下のような感じ。
------
killall -SIGUSR1 mongod を実行すると、既存のログファイルは
mongodb.log.2013-05-24T23-30-00
みたいにタイムスタンプ付でリネームされて、新しいログファイルが生成される。
その後で gzip コマンド呼び出して古いログを圧縮。
------
ということで、以下みたいなシェルスクリプトを書いて
#!/bin/sh # mongod log lotate killall -SIGUSR1 mongod # gzip ls /path/to/mongodb/log/mongodb.log.*[^z] | xargs gzip
毎月1日の0時0分に実行するよう crontab に設定して終わり。
crontab -e 0 0 1 * * /bin/sh /usr/local/mongodb/log_lotate.sh
ただ、これだと.gzファイルがたまっていっちゃうから、適当なタイミングで削除などする。