ルータのログを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 :