*

Twitterbotのlogファイルの肥大化を防ぐためのlogrotateの設定

公開日: : サーバ運用, 備忘録 , ,

この記事の所要時間:約5分34秒

abrAsus 保存するメモ帳
abrAsus 保存するメモ帳 / ytoApple信者の毒舌な妹botはcronで定期的にphpを実行することで呟いている。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なら通常はデフォルトでインストールされている・・・と思う。httpdyumなんかもデフォルトで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.logtwitterbot.log.1twitterbot.log.2、…のように世代が変わっていく。

21行目の/var/log/wtmp内と28行目の/var/log/btmp内は、それぞれwtmpbtmpというサービスのログファイルの設定。こういうふうに指定すると、サービスごとに上に記したグローバルな設定を書き換えられる。

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では「端末」と呼ばれているアレです。 個人

記事を読む

http://www.centos.org/

Cent OSサーバを1から再構成しなおした。

リストアしちゃいました。 再構成するきっかけになったのは、/パーティションをなんと2GBしかと

記事を読む

no image

YAMAHAのルータ NVR500を買った。

前からIO-DATAの無線LANルータWN-G300DGRの調子が悪かったので、買っちゃった

記事を読む

CakePHPディレクトリを他サーバに移転する際に困ったこと

まだ解決できていないが、CakePHPで作ったアプリケーションを別のレンタルサーバーに移転し

記事を読む

no image

メールでログを届けてくれるlogwatchをインストール

logwatchとは/var/logの内容を1日に一回メールで送ってくれるもの。 これがなかなかけ

記事を読む

no image

外付けHDDを起動時に自動マウントする

  前エントリでフォーマットからマウントまでやったが、自動マウントの設定を忘れていた

記事を読む

ドメインを取得してとりあえず使えるようにする手順

ドメイン名。ウェブページの顔ですね。ちょっとネットワークに詳しい人なら結構意識していると思います。

記事を読む

OP25Bを越えてメールの送信を可能にする手順

やっと出来るようになりました。この本のお陰ですほんとに。 送信関連でやったことは、SM

記事を読む

no image

/tmp/orbit-ユーザ名以下の謎のファイルが/tmpパーティションを圧迫する問題

これも以前から解決していなかった問題。tmpwatchの設定を変更することで解決した。 cronか

記事を読む

no image

自前のDropbox、ownCloudをインストールしてみる

自前のサーバを用意したら、ファイルサーバを作ってみたいと思うもの。 そこでなんと、ownClo

記事を読む

ブログを移行しました

新しいブログはこちら http://queryok.ikuwow.co

ChefとAnsibleの比較 〜Ansibleはじめました〜

今まで個人のMacの環境構築には、Brewfileなるものを作成してい

no image
モチベ低い大学院生でも院進学で得られたもの

つい今月の頭に修士論文を提出して、長いプレッシャーから解放されました。

Apple Thunderbolt Displayを使って30分で理解した利点3つ

今まで研究室ではMac ProとDellのちゃちな21インチモニタで作

ニコニコ動画の動画上部のニュースを非表示にするSafari機能拡張

作りました。 HideNicoVideoNews http:/

→もっと見る

PAGE TOP ↑