LogWatchで、サーバーのログをチェック!CentOS7

サーバーのログディレクトリ、/var/log/以下には、OSや様々なアプリのログが書き込まれます。

その情報の中には、脆弱性の対応のヒントなど、たくさんの情報が隠れています。

今の時代、Elasticsearch など、分析して、予測する賢いツールがたくさんあります。

今回は、昔からある、「LogWatch」をインストールします。

LogWatchインストール

# yum install logwatch

=============================================================================================================================
 Package                        Arch                 Version                                        Repository          Size
=============================================================================================================================
Installing:
 logwatch                       noarch               7.4.0-35.20130522svn140.el7_5                  base               403 k
Installing for dependencies:
 perl-Date-Manip                noarch               6.41-2.el7                                     base               1.2 M
 perl-Sys-CPU                   x86_64               0.54-4.el7                                     base                14 k
 perl-Sys-MemInfo               x86_64               0.91-7.el7                                     base                15 k

Transaction Summary
=============================================================================================================================

LogWatch 7.4 が入りました。

LogWatch設定

/usr/share/logwatch/default.conf/logwatch.conf
のファイルが基本であり、
この中身を変更するということではなく
/etc/logwatch/conf/logwatch.conf
に設定変更したい情報を記入します。
基本情報が上書きされます。

# vi /etc/logwatch/conf/logwatch.conf

MailTo = (送付先メールアドレス)

Detail = Low

Lowの他に、Mid、High
もしくは、0~10までの数字を指定します。

High(もしくは、数字が大きい方)が、「詳しく」、解析してくれます。

LogWatchテスト

# logwatch --output mail

で、テスト的にメールが送られてきます。
 --------------------- clam-update Begin ------------------------ 

 No updates detected in the log for the freshclam daemon (the
 ClamAV update process).  If the freshclam daemon is not running,
 you may need to restart it.  Other options:
 
 A. If you no longer wish to run freshclam, deleting the log file
    (default is freshclam.log) will suppress this error message.

ログの中に上記のようなメッセージが入ってきました。
「Clam-AV」(無料ウィルスチェックソフト)のログを調べたが、アップデートされていないみたいだよ。どうする?
と・・・

「A」は、「freshclam.log」を削除すれば、もう、メッセージは、出ない・・・と・・・
つまり、Clam-AVはは、使わない・・・。ということ・・・
実際に、一時期、テストしていましたが、このLinuxでは、Clamを動かしていません。

# cd /var/log/clamav
# rm freshclam.log 
rm: remove regular file ‘freshclam.log’? y

と、ログを削除します。

LogWatchの趣旨

LogWatchは、1日に1回、「前の日」のログをチェック(解析)してくれます。

かつては、1時間に1回、リアルタイム的なログをチェックしていました。
「怪しい行(もしくは、普段見ない行)」を知らせてくれるものでした。
1時間毎にチェックして、1時間の間に、記録されたログをチェックしてくれます。
1時間以上前にチェックしたものは、省いてくれました。

今のバージョンの、LogWatchは、前の日のデータをチェック(解析)するが、「デフォルト」のようです。

今の時代、ログではないですが、死活監視などは、
定番の
Zabbix
AWSだと、Amazon CloudWatch、
Mackerel(マカレル)
などのツールを使ってやるのが、いいかと思います。

LogWatch、実際に役に立ったのは・・・・

実際に役だったのは、オンプレの時代だと、
ディスク故障
ですね。焦りますね・・・
クラウド時代になり、この「焦り」は少なくなりました・・・いい、時代になりましたw

今の時代でも、MySQLが落ちた情報やDosアタックの情報などが有用でしょうか・・・

一つのツールだけに頼らず、様々なツールを組み合わせるのもいいかと思います。

logwatchが「うるさい」という方・・・ (2020/08/26追記)

logwatchを運用していると、「**Unmatched Entries**」
というところに、たくさんの情報が出てくる事があります。
この情報、「うるさい」「うざい」「多い」など、感じられるかと思います。

logwatchは、「普段とは、違う情報を知らせてくれる」
という趣旨があるかと思います。

「**Unmatched Entries**」の中で、「これは、通常運転の情報だよ」
というのを「省く」(除外する)事ができます。

/etc/logwatch/conf/ignore.conf
に、正規表現を使って書きます。

個人的に運用しているメールサーバーでは、dovecotのログが出てきます。
これを無視する場合

dovecot: imap.*: Logged out
dovecot: lda.*sieve:.*stored mail into mailbox.*INBOX
dovecot: lda.*sieve:.*stored mail into mailbox.*Junk

というように書きます。「.*」は、「改行以外にマッチ」です。

テストは、

# grep 'dovecot: imap.*: Logged out' /var/log/maillog

という感じで、チェックします。
この出力が、logwatchで、出力される、「うざい」情報と一致すれば、次回の出力からは、除外されます。

ログがチェックされない!(2020/08/30追記)

logwatchでは、初期設定のままであれば、「昨日」のログ、1日分をまとめて送ってくれます。

しかし、「昨日のDovecot関係のログが集計されていない!」

という事があります。

これは、「集計対象のファイル」を、「今のファイル」にしているためです。

「Dovecot」は、通常、「/var/log/maillog」に書き出されます。
logwatchは、この「/var/log/maillog」をチェックします。
しかし、「logrotate」の機能により、ある時点で、「/var/log/maillog」のファイルが、
「/var/log/maillog-YYYYMMDD」というファイルに置き換わります。
そして、新たな「/var/log/maillog」が生成され、ログが「/var/log/maillog」に書き込まれていきます。

logwatchの機能で、

「–archives」(コマンドライン)
「Archives」(logwatch.confに書き込む場合)

というオプションがあり、「/var/log/maillog」だけではなく、「/var/log/maillog-YYYYMMDD」もチェックしてくれます。

「ログがチェックされない!」といった場合、このオプションをつけてみましょう。
サーバー負荷が、多少は多くなるので、コマンドラインからチェックをしたほうがいいのかもしれません。

指定した日時をチェックしたい(2020/08/30追記)

logwatchの初期設定では、リポートは、1日1回です。

もっと、短い間隔でチェックしたい場合は・・・

「–range」オプションを使います。

--range today
--range yesterday
--range '4 hours ago for that hour'
--range '-3 days'
--range 'since 2 hours ago for those hours'
--range 'between -10 days and -2 days'
--range 'Apr 15, 2005'
--range 'first Monday in May'
--range 'between 4/23/2005 and 4/30/2005'
--range '2005/05/03 10:24:17 for that second'

というオプションがあります。

初期設定では、「yesterday」です。

--range '4 hours ago for that hour'

を設定すると、4時間前からの1時間。
9:30に実行すると、4時間前の5時の0分から1時間のログをチェック。
となります。
--range 'since 2 hours ago for those hours'

上記では、2時間前の0分から、今まで。
9:30に実行すると、7:00から今まで。

という指定ができます。

あるサービスだけ、短時間の間隔(リアルタイムな感じ)でチェックしたい(2020/08/30追記)

Kernelのメッセージで、1時間毎にチェックしたい。
といった場合、

logwatch --service Kernel --range '1 hours ago for that hour' --archives

と「 –service Kernel」と、サービス名をします。

通常のlogwatchは、今まで通り、1日1回で、サーバーに対して重要な部分として、Kernelを1時間毎にチェック
という要望の場合、

crontabで、

そして、

1 * * * * /usr/sbin/logwatch --service Kernel --output mail --range 'since 1 hours ago for those hours' --archives

と設定すると、いいのかと思います。

 

タイトルとURLをコピーしました