*

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

記事を読む

no image

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

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

記事を読む

Cent OSサーバを起動するたびにいろいろとプロセスがクラッシュする問題

いつからか、Cent OSサーバを再起動するたびに件名が" full clash repor

記事を読む

no image

Postfixに新規ユーザを追加する場合の手順

送受信どちらも問題なくできるようになり、ひとまず安心。 サブで使ってるユーザアカウントの方のア

記事を読む

no image

公開鍵認証のSSH

サーバ構築もそろそろ守りを固めます。 SSHを公開鍵認証に。 $ ssh-keyge

記事を読む

no image

新サーバにMaildirディレクトリを移動させたときのトラブル

サーバを作りなおした件で、Postfix・Dovecotサーバもリストアしました。 新サーバで

記事を読む

no image

NVR500でフレッツサービス情報サイト(NGN IPv4)に接続するための設定

安定性に定評のあるYAMAHAのNVR500たんを買ってもう3ヶ月になりますが、やっとこさフレッツサ

記事を読む

no image

ApacheでSSLを有効に(mod_ssl)

動機は、ownCloudをインストールしたこと。自分しか使わないとはいえブラウザでアクセスできるオン

記事を読む

NVR500にプロバイダの固定IPサービスを設定する手順

ついに私も、固定IPサービスを使うことにしました。ルータへの設定で若干詰まったのでメモ。自鯖

記事を読む

NVR500のVPN設定にめげるチンパンジー

auのiPhoneから自宅のNVR500にVPN接続は簡単にはできないっぽい

NVR500のVPN設定にめげるチンパンジー[/caption] ここ1週間ぐらい、手持ちの

記事を読む

ブログを移行しました

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

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

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

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

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

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

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

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

作りました。 HideNicoVideoNews http:/

→もっと見る

  • follow us in feedly
PAGE TOP ↑