Twitterbotのlogファイルの肥大化を防ぐためのlogrotateの設定
この記事の所要時間:約5分34秒
crontab
の設定では、以下のように/var/log/twitterbot.log
にログを吐き出すようにしている。エラーは通常標準出力に出力されるが、cronの設定で指定したメールアドレスに知らせてくれるようにしてある。
12 6-23 * * * /usr/bin/php /usr/share/php/twitterbot.php 1 >> /var/log/apple_dokuzetsu.log
もちろんこれでログを参照することはできるけど、放おっておくとただファイルが肥大化していく。この肥大化するログファイルをうまいことやってくれるのがlogrotate。定期的にリネームして別ファイルにしてくれたり、古いログファイルを削除してくれたり。
logrotateの仕組みや設定ファイル
logrotateはLinuxなら通常はデフォルトでインストールされている・・・と思う。httpd
やyum
なんかもデフォルトでlogrotateの恩恵を受けられるようになっている。
/etc/logrotate.conf
が全体の設定スクリプト。私のは以下のようになっていた。
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
コメントを読めばだいたい分かる。念のため、rotate 4
というのは4世代を保存しておくという意味で、具体的にはtwitterbot.log
がtwitterbot.log.1
、twitterbot.log.2
、…のように世代が変わっていく。
21行目の/var/log/wtmp
内と28行目の/var/log/btmp
内は、それぞれwtmp
とbtmp
というサービスのログファイルの設定。こういうふうに指定すると、サービスごとに上に記したグローバルな設定を書き換えられる。
18行目のinclude /etc/logrotate.d
と書いてあるように、/etc/logrotate.d
以下にあるサービスごとの設定ファイルを読み込んでいる。例えば/etc/logrotate.d/yum
の内容は以下のようになっていた。
/var/log/yum.log { missingok notifempty size 30k yearly create 0600 root root }
missingok
でログファイルが存在しなくても処理を続行、notifempty
で元のログファイルが空ならロテートしない、size 30k
でログファイルの容量が30kB以上になったらロテートする(weeklyなどより優先)、yearly
は/etc/logrotate.conf
に書いてあったweekly
を上書き、create
でロテートしたあとに新しい空のログファイルを作成。compress
でロテートしたログファイルを.gz
で圧縮できたりもするらしい。
/etc/logrotate.d/twitterbot
の内容
以上のような仕組みを踏まえて、以下の様に設定を作成。
/var/log/twitterbot.log { missingok notifempty size 1M create 0644 root root }
まあsizeを念のため1MBにしたぐらいで、特別なことはやっていない。これで動いてくれる・・・・はず! 一週間後を楽しみに待ちましょう。
関連記事
-
MacやLinuxのシェルで使えるショートカットたち
Macでは「ターミナル」、GUIのLinuxでは「端末」と呼ばれているアレです。 個人
-
Cent OSサーバを1から再構成しなおした。
リストアしちゃいました。 再構成するきっかけになったのは、/パーティションをなんと2GBしかと
-
YAMAHAのルータ NVR500を買った。
前からIO-DATAの無線LANルータWN-G300DGRの調子が悪かったので、買っちゃった
-
CakePHPディレクトリを他サーバに移転する際に困ったこと
まだ解決できていないが、CakePHPで作ったアプリケーションを別のレンタルサーバーに移転し
-
メールでログを届けてくれるlogwatchをインストール
logwatchとは/var/logの内容を1日に一回メールで送ってくれるもの。 これがなかなかけ
-
外付けHDDを起動時に自動マウントする
前エントリでフォーマットからマウントまでやったが、自動マウントの設定を忘れていた
-
ドメインを取得してとりあえず使えるようにする手順
ドメイン名。ウェブページの顔ですね。ちょっとネットワークに詳しい人なら結構意識していると思います。
-
OP25Bを越えてメールの送信を可能にする手順
やっと出来るようになりました。この本のお陰ですほんとに。 送信関連でやったことは、SM
-
/tmp/orbit-ユーザ名以下の謎のファイルが/tmpパーティションを圧迫する問題
これも以前から解決していなかった問題。tmpwatchの設定を変更することで解決した。 cronか
-
自前のDropbox、ownCloudをインストールしてみる
自前のサーバを用意したら、ファイルサーバを作ってみたいと思うもの。 そこでなんと、ownClo