server-memo.net

logwatchによるログ監視

   

logwatchとは

サーバでは色々なサービスからのログを収集しています。

そのログを確認・解析することで「障害の兆候」や「原因」「稼働状況」等が分かりますが、収集されるログの量が多い場合はログの確認・解析作業がとても大変になります。

logwatchはログを自動的に解析し、その結果をリポートとして知らせて運用をサポートしてくれるソフトとなります。

logwatchインストール

logwatchはyumで簡単にインストールすることができます。

# yum install logwatch

logwatchをインストールすると、自動的にcronに登録されて毎日logwatchが実行されるようになります。(設定ファイルは/etc/cron.daily/0logwatch)

設定

logwatchデフォルトの設定が下記のファイルとなります。

/usr/share/logwatch/default.conf/logwatch.conf

デフォルトの設定から変更したい項目を、下記ファイルに記述することで設定を変更することができます。

/etc/logwatch/conf/logwatch.conf

「/etc/logwatch/conf/logwatch.conf」の中身を見てみると、デフォルト設定が「/usr/share/logwatch/default.conf/logwatch.conf」で、ローカル設定をここで設定するという旨の記述がされています。

# cat logwatch.conf
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)

「/etc/logwatch/conf/logwatch.conf」には、デフォルトの設定から変更したい項目を記述すれば良いのですが、私は一つ一つ設定項目を記述していくのが面倒なのでデフォルトの設定を「/etc/logwatch/conf/logwatch.conf」に全部コピーして使用しています。

# cp -p /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf
# cd /etc/logwatch/conf
# vi logwatch.conf

この辺は好みの問題なので、変更したい項目のみ記述していく方法で設定を行って頂いても良いです。

設定変更項目

私がlogwatchを使用する際に変更している設定項目について説明していきます。

メール通知先設定

logwatchからのログ解析結果を受信するメールアドレスを設定します。

変更前
MailTo = root
変更前
MailTo = log@server-memo.net

メールの送信先をローカルの「root」ユーザから「log@server-memo.net」宛に変更しています。

メール送信先は好きなメールアドレスへ変更してください。(サーバ上のローカルユーザ宛にメールを送信することもできます)

ログの情報レベル設定

通知するログの解析結果の情報表示レベル設定します。

変更前
Detail = Low
変更後
Detail = Hight

私は詳しい情報まで見たいので「High」に設定変更していますが、設定できるレベルは「Low (0)」「Med (5)」「High (10)」があり、それぞれ文字または数字で設定をすることができるので、好みに合わせてレベル設定を行ってください。

メールの差出人設定

Logwatchから出されるメールの差出人を設定します。

複数サーバがある場合などは、一目でどのサーバから送信されてきたのかを判断しやすいものにすると良いでしょう。

変更前
MailFrom = Logwatch
変更後
MailFrom = www

webサーバからのリポートと分かるようにwwwと設定してみました。

その他の設定

その他の設定項目についてこのページの下部にて説明をしていますので、変更を行いたい項目があれば変更を行ってください。

動作確認

設定の変更作業が完了したら、次に動作確認を行っていきます。

動作確認の方法として、標準出力にレポートを出力する方法と、メールでレポートを送信する方法について説明していきます。

ログレポートを標準出力へ表示

レポートを出力する先は「--output」オプションで指定することが出来ます。

「stdout」を指定することで、レポートを標準出力に表示させることが出来ます。

# logwatch --output stdout

ログレポートのメール送信テスト

標準出力にログレポートを表示させて表示内容に問題がなければ、次にレポートのメール送信試験を行います。

「--output」オプションで「mail」を指定することで、レポートをメールで送信することができます。

# logwatch --output mail

設定項目一覧

その他の設定項目も説明させていただきます。

項目 初期値 設定内容
LogDir /var/log ログが格納されているディレクトリを設定
TmpDir /var/cache/logwatch logwatchが使用する一時ファイルを作成するディレクトリを設定
Output stdout ログレポートの出力方法を設定

  • stdout = 標準出力に出力
  • mail = メールとして出力
  • file = 後記にあるFilenameで設定されたファイルへ出力
Format text 通知されるレポートのフォーマット設定
「text」または「html」から設定
Encode none レポートのエンコード設定
エンコードを「Base64」にする場合は「base64」と設定
MailTo root logwatchからのメール送信先設定
ローカルアカウントまたはe-mailアドレスを設定
Mailto_host1
※初期設定ではコメント化されている
user@example.com --multiemailオプションを使用している際に設定することで、リポート送信先を複数していることが可能
※私の環境ではUnknown option: multiemailと表示されて使用できませんでした
MailFrom Logwatch logwatchが送信するメールのFromを設定
Filename
※初期設定ではコメント化されている
/tmp/logwatch リポート結果を保存するファイルを設定
初期設定ではコメントとなっている
Archives Yes
※設定ファイル上は#Archives = Noと記述されている
「/var/log/messages-yyyymmdd」「/var/log/messages.1」といったアーカイブされたログファイルも解析対象にするかどうかの設定
デフォルトでは「Yes」に設定されてるので、「No」にする場合は「#」削除してアンコメントを行う
Range yesterday 解析するログの時間範囲を設定
「All」「Today」「Yesterday」から選んで設定
Detail Low ログレポートの情報レベル設定
設定レベルは「Low」「Med」「High」または数字で設定します
「Low = 0」 「Med = 5」 「High = 10」
Service All
"-zz-network"
"-zz-sys"
"-eximstats"

ログを解析するサービスを設定

「/usr/share/logwatch/scripts/services/」ディレクトリ内のサービスから選択するか「All」を設定

「All」を設定した場合は、サービス名の前に「-」を付けることでログの解析を行わないサービスを設定することも可能

初期設定では「zz-network」「zz-sys」「eximstats」のログについては解析を行わない設定となっている

LogFile
※初期設定ではコメント化されている
messages 解析するログファイル指定する場合に使用
この設定が有効となると、そのログのみが解析対象となる
mailer "/usr/sbin/sendmail -t" メールを送信するためのMTAを設定
HostLimit
※初期設定ではコメント化されている
myhost 複数ホストからログを収集している場合ログの解析を行うホスト名を設定
カンマ「,」で区切ることで複数ホストを設定可能
 

設定いろいろ

レポートの送信先を複数登録

ログレポートのメール送信先を複数にしたい場合の設定方法です。

「MailTo」でレポート送信先メールアドレスを設定する際に、スペース区切ることで複数のメールアドレスを設定することができます。

MailTo = tamohiko@server-memo.net log@server-memo.net

 - サーバ運用