logrotateとlogwatch

ログは通常、ひとつのファイルに追加されていき(例:/var/log/access.logなど)、
長い期間サーバーを運用し続けているとログファイルの容量 がどんどん大きくなっていきます。
それを防ぐために、指定したファイル容量・期間が来ると自動でファイルを
access.log1、access.log2、access.log3・・・のように分割作成してくれる「logrotate」を使います。

設定ファイル
# vi /etc/logrotate.conf

# see “man logrotate” for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

設定値 説明
compress    ローテーションされたログをgzipで圧縮する。
create [パーミッション] [ユーザ名] [グループ名] ローテーション後に新たな空のログファイルを作成します。
ファイルのパーミッション、ユーザ名、グループ名を指定できます。
daily    毎日ログローテーションする。
ifempty    ログファイルが空でもローテーションする。
missingok    ログファイルが存在しなくてもエラーを出さない。
monthly    毎月ログローテーションする。
nocompress    ローテーションされたログを圧縮しない。
nocreate    新たな空のログファイルを作成しない。
nomissingok    ログファイルが存在しない場合エラーを出す。
noolddir    ローテーション対象のログと同じディレクトリにローテーションされたログを格納する。
notifempty    ログファイルが空ならローテーションしない。
olddir    ディレクトリ名 指定したディレクトリ内にローテーションされたログを格納する。
postrotate – endscript    postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行する。
prerotate – endscript    postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行する。
rotate    回数 指定した回数だけローテーションする。
size ファイルサイズ    ログファイルが指定したファイルサイズ以上であればローテーションする。
sharedscripts    複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドを実行する。
weekly    毎週ログローテーションする。

補足
/etc/logrotate.d/以下に、個々のプログラムに対する設定ファイルがあるので同様に設定しなおしてもよい。
ログ管理01

//////////////////////////////////////////////////////////////////////////////////////////////////
logwatch
サーバ管理の基本はログのチェックですが多くの機能を詰め込んだサーバだとログの数も大量になります。
それらを逐一チェックしているだけで時間と労力を使い果たしてしまうでしょう。
そこで各プログラムのログを見やすい書式に変換してメールで報告してくれる「logwatch」というプログラムを使用します。
「Logwatch」は(デフォルトでは)毎日夜間に実行され、
ログから特定のパターンを含む行を比較的見やすい状態に加工して表示させることが可能です。

インストール
# apt-get install logwatch

設定ファイル 確認
# cat /etc/logwatch/conf/logwatch.conf
 MailTo = メールを送るアドレスを記載またはrootで受信 
 Range = Yesterday で前日のログをメールで送信する
 Detail = Low でログの解析精度を中にします(Medなら中、Highなら高)

/etc/log.d/conf/logwatch.confのデフォルト設定は、以下のようになっています。
LogDir = /var/log   ←ログが保存されるディレクトリを「/var/log」に指定
MailtTo = root   ←メールの送信先をローカルのrootユーザーに指定
Print = No   ←コンソールに表示しない
Range = yesterday   ←昨日のログファイルをチェックする
UseMkTemp = Yes   ←mktempを使用して一時ファイルを作成
Detail = Low   ←レポートの詳細度をLowに指定
Service = All   ←「/etc/log.d/scripts/services/」ディレクトリにあるすべてのファイルの内容でフィルタをかけて情報を取得
Mailer = /bin/mail   ←メールコマンドを「/bin/mail」に指定
注:コメント行は省略していますが、logwatch.confは設定マニュアルも兼ねているので一度は目を通しましょう。
メール送信先のみの変更で問題なく使用可能です。
デフォルトでコメントアウトされている設定はチェックする項目に制限をかけるためのものなので、特に使用する必要はありません。

このプログラムはインストールすると自動的に「Cron」に登録される為、
毎日自動的に指定したメールアドレスに送信されます。
もしも解析情報が少ない場合は「Detail = High」にして情報量を増やしたりして見ましょう。

cronにより、毎日実行されます。
実行される時間は、/etc/crontabで確認できます。
crontabファイルには毎月、毎週、毎日、毎時に実行する時刻などが定義されています。

(省略)
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
上記より、「/etc/cron.daily」ディレクトリにあるスクリプトは4時2分に実行されることが確認できます。
曜日欄は、0と、7が、日曜を表すようです。
0は月曜日である。

テストしてみる
 # /usr/sbin/logwatch
 
 指定したアドレス宛に、レポート結果が届くはず・・・

 メールで送られて来た、レポート結果 ↓

実行が終了すると、例えばrootあてに以下のようなメールが届く。

################### LogWatch 5.2.2 (06/23/04) ####################
Processing Initiated: Sun Mar 18 06:25:13 2007
Date Range Processed: yesterday
Detail Level of Output: 5
Logfiles for Host: XXXXX
################################################################
——————— courier mail services Begin ————————

The authdaemon was restarted 2 Times

Connections: 14 Times
Protocol POP3 – 5 Times
Host 192.168.0.3 – 5 Times

Protocol IMAP – 9 Times
Host 192.168.0.3 – 9 Times
以下省略