FreeBSDでlogrotateのインストール

| コメント(0) | トラックバック(0)

FreeBSDには標準でnewsyslogというログローテーションツールが入っています。ただ、このnewsyslogは、バックアップしたログファイルに日付を入れることができません。
たとえばWebサーバーのログなどでは、日付繰上げでログを保存するようになっていると、ログ解析のときにファイルの管理が面倒になることがあります。
そこで、Linux標準のlogrotateをFreeBSDでも使ってみたいと思います。

インストールはportsから簡単にできます。


# cd /usr/ports/sysutils/logrotate/
# make install

インストールしたら、設定を行います。
まず共通設定から。


# cd /usr/local/etc/
# cp logrotate.conf.sample logrotate.conf

共通設定ファイルを作ったら、編集します。


# ee logrotate.conf

以下の二箇所をコメントアウトします。


# send errors to root
#errors root

#/var/log/lastlog {
#    monthly
#    rotate 1
#}

次にログファイルごとの設定を行います。共通設定ファイルに「logrotate.d」ディレクトリ内のファイルをインクルードするようになっていましたので、「logrotate.d」ディレクトリを作成します。


# mkdir /usr/local/etc/logrotate.d

作成した「logratate.d」ディレクトリ内に設定ファイルを作成します。
ここではApacheのログローテーション設定を書き加えます。


# ee /usr/local/etc/logrotate.d/apache22

/var/log/httpd/*.log {
    daily
    rotate 365
    compress
    ifempty
    missingok
    dateext
    create 0666 www www
    sharedscripts
    postrotate
        /usr/local/etc/rc.d/apache22 graceful
    endscript
}

ログファイルはワイルドカードを使用することができます。半角スペースで区切って複数のログファイルを指定することもできます。
また、上記のそれぞれの設定は以下のような意味があります。

daily 毎日ログローテーションを行う。毎週行うweeklyという設定もあります。
rotate 365 365個のログファイルをバックアップとして保存しておきます。100個保存する場合は100と指定します。これを超える場合は古いファイルから削除されます。
compress バックアップしたログファイルを圧縮します。
ifempty ログファイルが空でもローテーション処理を実行します。
missingok ログファイルが無くてもエラーを出さないようにします。
dateext バックアップしたログファイルに年月日を付与します。
create 0666 www www ログファイルやバックアップを作成するときに、指定したパーミッション・ユーザー・グループで作成します。
sharedscripts ログローテーションを実行する前後に実行する「prerotate」「postrotate」の実行を、ログファイル一つ一つに対してではなく、このグループ内でまとめて一度だけ実行します
postrotate ~ endscript ログローテーションを実行した後に実行するコマンドを指定します。ローテーション実行前にコマンドを実行する場合は「prerotate~endscript」を指定します。

設定が完了したら、ためしに動作させてみましょう。
以下のコマンドを実行してlogrotateを実行します。


# /usr/local/sbin/logrotate -fv /usr/local/etc/logrotate.conf

このとき、「-f」オプションが付いているので強制実行されます。すでに稼働中のシステムのときはご注意ください。
また「-v」オプションは詳細情報を表示します。問題があったときは詳細情報を参考にして設定ファイルを修正できます。

すべて問題が無いことを確認したら、cron設定に追加して定期的に実行されるようにします。


# ee /etc/crontab

以下を追加します。


0   0   *   *   *   root    /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf >/dev/null 2>&1

設定を書き換えたら、crondを再起動します。


# /etc/rc.d/cron restart

(2008/5/28追記)
logrotateの設定にログファイルを追加したとき、初回のログローテーションが実行されないことがあります。
これは、新しいログファイルの初回の実行時は、ログローテーションの日時を記録するだけで終了してしまうためです。

その、ログの日時を記録するファイルは、
/var/log/logrotate.status
にあります。このファイルにはこのように書いてあります。


logrotate state -- version 2
"/var/log/httpd/access.log" 2008-5-28
"/var/log/httpd/error.log" 2008-5-28

初回も強制的にローテーションを実行するには、前述のとおり「-f」オプションをつけて実行します。

トラックバック(0)

トラックバックURL: http://blog.harmonicom.jp/mt/mt-tb.cgi/98

コメントする

プロフィール

ヤマカズー(ヤマカズ)

Webコンサルティング会社に勤めるシステムコンサルタントのおっちゃんです。
趣味はコンピューター。まんまですね。
あと申し訳程度に空手とか。
子供が二人います。

kazooooo at gmail.com

mixiはこちら

HARMONICOM

twitter

スゲーなんだこれ!?w > スマホをPCのセカンドディスプレーにできるAndroidアプリがイカス! #asciiplus http://t.co/4hbbnZeb
2012-02-02 20:08:03
いやあぁぁぁぁ~~!! ん?「D」と「.」?……「し」「る」? RT @hizous : @yamakazoo サーバの後ろに悲しそうな顔をした日本髪の若い女性が見えます・・・何か心当たりはないですか・・・? ん?キーボードの「D」と「、」のところを指さしているようです・・・
2012-02-02 11:39:49
家のMacBookといい会社のサーバーといい、原因不明なところでCPUがフルパワーになったり、ディスクへのアクセスが異様に遅くなったりする……これってある意味、寿命ってことなのかな……
2012-02-02 11:16:13
おお! RT @YahooNewsJP : [社会]<雑記帳>劇団四季「キャッツ」出演者が電子確定申告 - 毎日新聞 http://t.co/5tDvGJI6
2012-02-01 22:50:43
うちの会社にも備蓄いっぱい!! 深夜メンテの時にこっそり食べ(ry RT @YahooNewsJP : [社会]「ビスコ」売り上げ過去最高に…備蓄用缶人気で - 読売新聞 http://t.co/ZKIpZ1RJ
2012-02-01 19:12:41
follow me on Twitter