忍者ブログ
出来損ないのカメレオン

/etc/logrotate.d/stat.log


#/etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log
 /var/log/cron /var/log/some/some.log {
  sharedscripts
  postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
  endscript
}
-------------------------------------
 /var/log/stat.log {
  missingok
  endscript
}


#relo vi /etc/logrotate.d/stat.log

/var/log/stat.log {
    weekly(daily)  ←毎週ログローテーションする。
    notifempty  ←ログファイルが空ならローテーションしない。
    missingok  ←ログファイルが存在しなくてもエラーを出さない。
}

#colo-db01
/var/log/loadchk.log {
    daily
    notifempty
    missingok
}

 logrotateの設定は、/etc/logrotate.confと/etc/logrotate.dディレクトリにある各設定ファイルで行います。

■logrotate.conf

 logrotate.confの内容(注)は以下のとおりです。
weekly  
rotate 4  
create  
#compress  
include /etc/logrotate.d  
/var/log/wtmp {  
monthly   
create 0664 root utmp   
rotate 1   
}   
注:Red Hat Linux7.3のデフォルト設定です。不要なコメント行は省いています。
    
   毎週ファイルの置き換えを行う(monthly、dailyも指定可)
   4世代分のファイルを保存
   ファイルの置き換え後、新しいログファイルを作成
   圧縮する(デフォルトは圧縮しない)
   各ログの詳細設定ファイルは/etc/logrotate.d
   wtmpログファイルは、毎月1世代のみファイルを置き換え、所有者がroot、所有グループがutmpの新しいファイルを0664のパーミッションで作成する

 logrotate.confファイルは、logrotateのグローバルな設定を行います。例えば、1日のログのデータ量が非常に多い場合はweeklyではなくdailyに変更をすることで、1つのファイルのサイズを小さくできます。その場合、「rotate 4」では4日分しかログが残らないため、必要に応じて数字を大きくするなどの設定変更が必要です。

■/etc/logrotated.d

 各ログファイルの設定は、/etc/logrotated.dディレクトリの設定ファイルで行います。syslogdで設定されたログの設定ファイルは、/etc/logrotated.d/syslog(注)になります。
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler
 /var/log/boot.log /var/log/cron { 
    sharedscripts 
    postrotate 
/bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null ' 2> /dev/null || true 
endscript 
}
注:Red Hat Linux 7.3のデフォルト設定です。
    
   最初の行にどのログファイルに関する設定かの記述
   複数のログファイルのローテーション後に、下の行の処理を1度だけ実行
   endscriptまでの処理をローテーション終了後に実行
   syslogdの動作中にファイルを移動すると、syslogdは出力すべきログファイルを見失ってしまうため、syslogdにHUPシグナルを送って設定を再読み込みさせている
   コマンドの終了

 「グローバルの設定では毎週ローテーションだがsyslogdのログファイルのみ毎日」に変更したければ、この中括弧のpostrotateより上に「daily」と記述します。「missingok」と記述すると、対象のファイルが存在しなくてもエラーを出しません。「size 10M」と記述すると、ファイルサイズが10Mbytesを超えるローテーションを行うことも可能です。指定可能なオプションが多いため、詳細は
$ man logrotate

で確認してください。

 logrotate はデーモンではなく、ここで設定した内容はcronによってlogrotateが起動されたときに読み込まれます。cronは/etc/crontabの内容に従い、/etc/cron.dailyディレクトリのsyslogを実行します。syslogファイルはlogrotateを起動するスクリプトになっており、設定ファイルに従って処理を行います。

 以上でsyslogdとlogrotationの基本説明を終了します。次回は、ログに関連するツールについて説明します。

PR
ブログ内検索
Counter


カレンダー
05 2024/06 07
S M T W T F S
1
2 3 4 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
忍者ブログ [PR]