takaokaです。
前回、前々回に続き、今回はログローテーションの設定をしてみたいと思います。
■ローテートの例 ・/etc/logrotate.d/syslogに記載されている下記のログをローテート対象としてみます。 /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler ・世代数は「2」としました。
■設定について ローテーション設定で、指定したディレクトリにローテート可能な「olddir」というコマンドがありますが、ローカルデバイスのみにしか対応していません。このため少々シェルコマンドを使いローテートをする設定を入れこみます。
■/etc/logrotate.d/syslog を編集します 変更前(デフォルト値)
変更後
黄色文字が追加した記述です。 ・$rotateに世代数(世代日数)、$archive_dirにS3のマウントポイントを定義しています。 ・for文で$∗を回します。$∗には/var/log/cron、/var/log/maillog、・・・が代入されていくので、$lognameに格納します。
・mvコマンドでローテートされた当日ファイル名のファイルを$archive_dirに移動します。 ・findコマンドで$archive_dirを起点として$logname-∗のファイルを検索し、$rotate(世代日数)より過去のファイルを削除しています。
この設定以降、ローテートのタイミングで2世代は常にS3側へ保存されます。