Logrotateが期待どおりに機能しません。

Logrotateが期待どおりに機能しません。

私のログ回転の設定は次のとおりです。

/var/log/glusterfs/*.log /var/log/glusterfs/bricks/*.log /var/log/glusterfs/bricks/*.log.* {
  sharedscripts
  daily
  rotate 3
  copytruncate
  size 100M
  missingok
  compress
  delaycompress
  ifempty
  postrotate
  /usr/bin/killall -HUP glusterfs > /dev/null 2>&1 || true
  /usr/bin/killall -HUP glusterd > /dev/null 2>&1 || true
  endscript
}

ディレクトリは次のとおりです。

username@server:/var/log/glusterfs/bricks$ ll
total 405980
-rw------- 1 root root         0 Dec 23 00:05 be-data.log
-rw------- 1 root root         1 Dec 29 09:38 be.log.1
-rw------- 1 root root         0 Dec 25 11:24 nl.log
-rw------- 1 root root         0 Dec 29 09:49 nl.log.1.1
-rw------- 1 root root         0 Dec 29 09:50 nl.log.1.1.1
-rw------- 1 root root         0 Dec 29 09:55 nl.log.1.1.1.1
-rw------- 1 root root         0 Dec 29 09:55 nl.log.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 09:55 nl.log.1.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 09:55 nl.log.1.1.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 09:55 nl.log.1.1.1.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root         0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root 368402432 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root    610304 Dec 23 00:05 bo.log.1
-rw------- 1 root root    860160 Dec 23 00:05 bricks.log.1
-rw------- 1 root root    589824 Dec 23 00:05 other.log.1

私が見ることができるもの:

  • ログは圧縮されません。
  • ログが100MBを超える
  • 計算が機能しません
  • 空のログファイルが存在し、空のログファイルが循環したくありません。

私のlogrotate設定は上記のすべての問題をどのように解決するのですか?

答え1

設定ファイルで、ディレクトリのログファイルに2つのモードを指定します/var/log/glusterfs/bricks

  1. *.log
  2. *.log.*

これらのパターンの2番目のパターンは、回転したログファイルと一致します。これが.1無限にサフィックス付きのファイルを取得する理由です。

ログファイルはdelaycompress設定で圧縮されているため圧縮されません。次の回転では圧縮されます。最初の問題(上記の2番目のパターンのためにすでに回転しているログの回転)は、すべての回転が「最初の」回転であるため、実際に圧縮を無効にします。

ログファイルが 100M より大きい場合、設定に従って循環します。これより大きいファイルがあります。上記の2番目のログファイルパターンに関連する問題のため、すべての呼び出しで回転して圧縮されません。

空のログファイルがあります。これは上記の誤ったログファイルの一致パターンのもう1つの効果です。ログファイルが回転すると、name-of-file.log.1元のファイルにコピーされ、name-of-file.log切り捨てられます(「空」)。また、*.log.*構成のパターンにより、name-of-file.log.1次回の回転時にファイルがコピーされ、元のファイルが切り捨てられます。name-of-file.log.1.1name-of-file.log.1

これはうまく機能しますが、ログファイルモードは実際のログファイルだけでなく回転したログファイルもインポートするため、最終的に混乱します。

答え2

今週無料でlogrotateのマンページをチェックしてください!

   delaycompress
          Postpone compression of the previous log file to the next  rota‐
          tion  cycle.  This only has effect when used in combination with
          compress.  It can be used when some program cannot  be  told  to
          close  its logfile and thus might continue writing to the previ‐
          ous log file for some time.

   size size
          Log  files are rotated only if they grow bigger then size bytes.
          If size is followed by k, the size is assumed  to  be  in  kilo‐
          bytes.   If the M is used, the size is in megabytes, and if G is
          used, the size is in gigabytes. So size  100,  size  100k,  size
          100M and size 100G are all valid.

   ifempty
          Rotate  the  log  file  even  if  it  is  empty,  overriding the
          notifempty option (ifempty is the default).

関連情報