ルータログを日単位でローテイトする。

Linux

ルータのログをLinuxにrsyslogを利用して転送している。
ログファイルはローテイトしないと、肥大するばかりである。ログをローテイトすることにより、古いファイルを削除してディスクの逼迫を解除する。

ログをローテイトする設定ファイルを作成する。

ルータのログをローテイトするためのrouterファイルを新規で作成する。

# cd /etc/logrotate.d
# vi router
/var/log/router/messages.log {
 create 644 root root  ・・・・・・ ①
 daily  ・・・・・・・・・・・・・・・ ②
 rotate 7  ・・・・・・・・・・・・・・③ 
 missingok  ・・・・・・・・・・・・・ ④
 notifempty  ・・・・・・・・・・・・・⑤
 compres  ・・・・・・・・・・・・・・・⑥
 delaycompress ・・・・・・・・・・・・⑦
 copytruncate  ・・・・・・・・・・・・⑧
}

   ① ローテイトして、新しいファイルのパーミッションの設定。
   ② 日単位でローテーションする。
   ③ 7日間ログを保存する。
   ④ ログファイルが存在しなくてもエラーを出さずに処理を続行する。
   ⑤ ログファイルが空ならローテーションしない。
   ⑥ ローテーションしたログを圧縮する(⑦が有るため当日は圧縮しない)。
   ⑦ ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定する。
   ⑧ ログファイルをコピーし、元ファイルを空にする。
     (書き込むサービスを再起動しないが、念のため。)

デバックモードでlogrotateを実行する。

/var/log/router/messages.logファイルが処理されるか確認する。

# /usr/sbin/logrotate -dv /etc/logrotate.conf
WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file apt
reading config file bdii
     :
reading config file zoneminder
Reading state from file: /var/lib/logrotate/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
     :
Creating new state

Handling 40 logs

rotating pattern: /var/log/apt/term.log  monthly (12 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apt/term.log
  log /var/log/apt/term.log does not exist -- skipping

rotating pattern: /var/log/router/messages.log  after 1 days (7 rotations)  ★
empty log files are not rotated, old logs are removed
considering log /var/log/router/messages.log
  Now: 2024-10-19 09:26
  Last rotated at 2024-10-19 00:00
  log does not need rotating (log has been rotated at 2024-09-19 00:00, which is less than a day ago)

rotating pattern: /var/log/cron
/var/log/maillog
      :