[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
/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の基本説明を終了します。次回は、ログに関連するツールについて説明します。