2019年10月20日日曜日

ログローテーション(その2)

/etc/logrotate.dディレクトリ内に、サービスごとの設定ファイル
下がそのリスト例


各設定ファイルの中身(記述)
----------------- httpd -----------------
/var/log/httpd/access_log {
    missingok → ログファイルが存在しない場合にエラーを出力しない
    postrotate → endscriptとの間に書いたコマンドをローテーション後に実行
/usr/bin/killall -HUP httpd → apache再起動(reload的な再起動)
apacheをソースコンパイル・インストールでバージョンアップした場合
/usr/bin/killall -HUP httpd の記述ではログがローテーションしなかった
そこで、新しいhttpdのある場所に変更しました
/usr/bin/killall -HUP /usr/local/apache2/bin/httpd
この記述に直してログローテーションが出るようになりました
残りの「error_log」などについても同様に直す必要があります
    endscript
}

/var/log/httpd/agent_log {
    missingok
    postrotate
/usr/bin/killall -HUP httpd
    endscript
}

/var/log/httpd/error_log {
    missingok
    postrotate
/usr/bin/killall -HUP httpd
    endscript
}

/var/log/httpd/referer_log {
    missingok
    postrotate
/usr/bin/killall -HUP httpd
    endscript
}
----------------- httpd end---------------
apacheの再起動をpostrotateとendscriptの間にこのように記述する場合がある

/sbin/service httpd reload > /dev/null 2>/dev/null || true

はログの吐き出しを再始動するために、apacheを再起動する必要がある。
apacheの再起動には、restart、reload、graceful がある。
(ただ、reloadだとapacheの設定が間違っていてもスルーするので
stop&startの方がいいみたいだ。。。)

Apacheで設定ファイルを変更した後の再起動ですが、大きく分けると「restart」、「reload」、「graceful」があります。このオプションの違いですが、以前の職場では以下のようなルールでした。
  • サービス影響が少ないかたちでの再起動は「graceful」を使う
  • サービス影響をあまり気にしなくても良い再起動は「restart」を使う
  • 設定ファイルの読み直しのみは「reload」を使う
gracefulを利用した場合は、以下のような処理でApacheが再起動します
  • 子プロセスは、現在のリクエストが終了後に終了します
  • 親プロセスは設定ファイルを読み直し、変更した設定が反映されます
  • 子プロセスが徐々になくなるに従って、 新しい子プロセスが起動されます
実行中のリクエストの処理を中止させたくない場合には、「graceful」を使用します
graceful 再起動時は、再起動前に構文チェックが行われます。 構文エラーがあればエラーが表示され、再起動は行われませんので、この方法での再起動はオススメです
syslogローテートの記述例下記は変更なしでOKでした
----------------- syslogd -----------------
/var/log/messages {
    postrotate
/usr/bin/killall -HUP syslogd
    endscript
}

/var/log/secure {
    postrotate
/usr/bin/killall -HUP syslogd
    endscript
}

/var/log/maillog {
    postrotate
/usr/bin/killall -HUP syslogd
    endscript
}

/var/log/spooler {
    postrotate
/usr/bin/killall -HUP syslogd
    endscript
}

/var/log/boot.log {
    postrotate
/usr/bin/killall -HUP syslogd
    endscript
}
----------------- syslogd end--------------

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。