logrotateとタイミングレコードの回転を使用する

logrotateとタイミングレコードの回転を使用する

スペース不足エラー(可能性のある脆弱性?)のリスクを排除または最小限に抑えるために、システムにかなり広範囲のロギングおよびログ循環タスクを設定しました。

ただし、logrotateサービスマニュアルページにはこの質問に対する明確な答えがありません。

logrotateサービスは、毎日、毎週、または毎月のオプションの最後のログローテーションのタイムスタンプをどのように決定しますか?

抜粋内容はman logrotate以下の通りです。

weekly [weekday]
              Log  files  are  rotated  once  each  weekday, or if the date is advanced by at least 7 days since the last rotation
              (while ignoring the exact time).  The weekday interpretation is following:  0 means Sunday, 1 means Monday,  ...,  6
              means  Saturday; the special value 7 means each 7 days, irrespectively of weekday.  Defaults to 0 if the weekday ar‐
              gument is omitted.

以前のローテーションログファイルの最後に変更されたタイムスタンプをチェックして、最後のローテーション時間を継続的に確認します(cronjobを使用)。

もしそうなら、ユーザーが何らかの方法でシステムを「だまして」システム時間を非同期化するように強制した場合(通常はこれは非常にまれな攻撃ベクトルであり、正しく保護されていないために実行しやすい)、したがって回転logrotateログを生成します。将来のタイムスタンプを使用すると、デフォルトでは周波数ベースのlogrotate回転は無効になりますか?


注:問題のシステムはtumblerd(システム構成によるものであるか、または不可能な本当の脆弱性のために)サムネイル管理者であることがわかります。syslogこれはシステムエラーが発生した場合とログにエントリを追加し続けるためです。それぞれ最大100 GB(最初にスペース面で、次にメモリリークとCPU負荷の急増)。これはそれ自体が問題になっただけでなく、3つのログファイルを読み取ることができなくなり、当時私が考えていた唯一の解決策はそのファイルを消去することでした。user.logmessagesecho "" > [filename]

ベストアンサー1

FOSSなので、logrotateソースコードをダウンロードして読んでみてください。 Ubuntuでは、パッケージングシステムは以下を表示します。

walt@bat:~(0)$ apt-cache show logrotate
Package: logrotate
Architecture: amd64
Version: 3.8.7-2ubuntu2.16.04.2
Priority: important
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Paul Martin <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 113
Depends: libacl1 (>= 2.2.51-8), libc6 (>= 2.14), libpopt0 (>= 1.14), libselinux1 (>= 1.32), cron | anacron | cron-daemon, base-passwd (>= 2.0.3.4)
Suggests: mailx
Breaks: postgresql-common (<= 126)
Filename: pool/main/l/logrotate/logrotate_3.8.7-2ubuntu2.16.04.2_amd64.deb
Size: 37660
MD5sum: ae3cf957775ac5c9e72604ac80b71e24
SHA1: 78687a0db41fad8b25b9aaa0f9e9e01739cb6136
SHA256: 4089998610e24a849d0286f1a657a714e7f3fe249f82eef3896778054ea1753e
Homepage: https://fedorahosted.org/logrotate/
Description-en: Log rotation utility
 The logrotate utility is designed to simplify the administration of
 log files on a system which generates a lot of log files.  Logrotate
 allows for the automatic rotation compression, removal and mailing of
 log files.  Logrotate can be set to handle a log file daily, weekly,
 monthly or when the log file gets to a certain size.  Normally, logrotate
 runs as a daily cron job.
Description-md5: bb73169bb75b2b8a2fda1453d214416d
Task: minimal
Supported: 5y

Package: logrotate
Priority: important
Section: admin
Installed-Size: 113
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Paul Martin <[email protected]>
Architecture: amd64
Version: 3.8.7-2ubuntu2
Depends: libacl1 (>= 2.2.51-8), libc6 (>= 2.14), libpopt0 (>= 1.14), libselinux1 (>= 1.32), cron | anacron | cron-daemon, base-passwd (>= 2.0.3.4)
Suggests: mailx
Breaks: postgresql-common (<= 126)
Filename: pool/main/l/logrotate/logrotate_3.8.7-2ubuntu2_amd64.deb
Size: 37642
MD5sum: 858f35a2a3eec8dc07e9896f8a905981
SHA1: 18802ca05d004b4d70aa400920668f71af98b47e
SHA256: bc370a2003b18b1761adceed2fdf575122117cbf17edc6de377d64dc01623d6e
Description-en: Log rotation utility
 The logrotate utility is designed to simplify the administration of
Since `logrotate` is FOSS, you could just dowload the source and read it. On Ubuntu.  log files on a system which generates a lot of log files.  Logrotate
 allows for the automatic rotation compression, removal and mailing of
 log files.  Logrotate can be set to handle a log file daily, weekly,
 monthly or when the log file gets to a certain size.  Normally, logrotate
 runs as a daily cron job.
Description-md5: bb73169bb75b2b8a2fda1453d214416d
Homepage: https://fedorahosted.org/logrotate/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: minimal

Homepage: https://fedorahosted.org/logrotate/良い出発点です。

良いlogrotate方法は、ロギングエンティティが現在のログファイルを閉じて新しいログファイルを開くように強制することです。これはsignals、または(サーバーの停止、ログファイルの名前変更、サーバーの起動)を介して行うことができます。

おすすめ記事