どうも、おばちゃま (@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 する必要があるので注意よ。
うーん…
そうねえ…なんかスマートぢゃないわね。
元記事は、こちらです。