ログは通常、ひとつのファイルに追加されていき(例:/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/以下に、個々のプログラムに対する設定ファイルがあるので同様に設定しなおしてもよい。
//////////////////////////////////////////////////////////////////////////////////////////////////
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
以下省略