どうも、おばちゃま (@inokora) よ。HAProxy のログを logrotate でローテーションしたくて色々と調べたわ。

logrotate のデヴァッグ

logrotate -dv ${設定ファイル}

「logrotate への DV は「ダメ、絶対。」」と覚えるといいわよ。

実際に走らせたい

logrotate が実行されると以下のファイルにローテーションしたログの日付が記録されるわ。

/var/lib/logrotate.status

中身は以下のような感じ。

"/var/log/httpd/access_log" 2014-7-27
"/var/log/td-agent/td-agent.log" 2014-8-4

ここの日付をチョチョイと弄ってあげると実際にローテーションを動かしてみることが出来るわ。

HAProxy のログローテーション

以下の記事を参考にしたわ。

以下を /etc/logrotate.d/haproxy に保存して rsyslog を restart するだけ。

/var/log/haproxy/*log {
    rotate 7
    daily
    missingok
    notifempty
    sharedscripts
    compress
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

簡単ね。

logrotate のオプションとして以下のオプションも要チェックよ。

オプション 意味
delaycompress ログの圧縮作業を次回のローテーション時まで遅らせる。compress と一緒に指定する。
dateext ローテーションしたファイルに日付(-YYYYMMDD)を付ける。但し、ローテーションが発生した日付。
dateformat format_string ファイルに format_string で指定した日付を付けることが出来る。デフォルトは -%Y%m%d なので .%Y%m%d なん感じも出来る

ってな感じ。

あと、ログ切り替えのタイミングは HAProxy のリロードは要らないわ。但し、rsyslog を kill -HUP する必要があるので注意よ。

うーん…

そうねえ…なんかスマートぢゃないわね。

元記事は、こちらです。