Linux/Ubuntu で大量のログを解析してレポートを作成してくれる logwatch のインストールと設定についての覚え書きです。
Contents
環境
Raspberry Pi (Rasbian)
Debian系なので Ubuntu もおおよそ同様のはず。
インストール
$ sudo apt update $ sudo apt -y upgrade $ sudo apt install logwatch
変更前の確認
設定を変更する前に logwatch を実行してみます。
初期設定では 標準出力(stdout) に解析結果のレポートが表示されます。
$ sudo logwatch
設定
インストール直後の状態では簡易レポートを毎日メールアドレス宛てに送信してくれます。
ここでは4つのことを行うように設定を変更します。
- 簡易なレポートから詳細なレポートに変更する。
- レポートをファイルに保存する。
- 保存したレポートをメールアドレスに送信する。
- 保存したレポートを Dropbox にアップロードする。
個人的な備忘録要素が強くどれも必須ではないので不要な部分は適当に読み飛ばしてください。
ssmtpの導入
レポートを自動で自分宛のメールアドレスに送信できるように ssmtp を利用します。
インストールや設定については別記事を参照。
【Linux/Ubuntu】ssmtpのインストールと設定 | 積水成淵日記
Dropbox Uploaderの導入
レポート結果を自動で Dropbox にアップロードするため Dropbox Uploader を利用します。
Dropbox Uploaderの設定については別記事参照。
【Raspberry Pi】Dropbox Uploader のインストール | 積水成淵日記
わざわざレポートを Dropbox にアップするのは ログ関連のフォルダを RAMDISK に設定しているのでバックアップを兼ねてます。
/etc/logwatch/logwatch.conf の変更
logwatch のデフォルトの設定ファイル /usr/share/logwatch/default.conf/logwatch.conf をコピーして必要な部分だけ変更してます。
見やすいさを優先してコピーしていますが新規作成しても問題ないはずです。
# デフォルト設定のコピー $ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf # レポートのレベルを詳細に $ sudo vim /etc/logwatch/conf/logwatch.conf #TmpDir = /var/cache/logwatch #Detail = Low Detail = High # 有効な設定の抽出 $ sudo cat logwatch.conf | grep -v ^# LogDir = /var/log Output = stdout Format = text Encode = none MailTo = root MailFrom = Logwatch Range = yesterday Detail = High Service = All Service = "-zz-network" # Prevents execution of zz-network service, which # prints useful network configuration info. Service = "-zz-sys" # Prevents execution of zz-sys service, which # prints useful system configuration info. Service = "-eximstats" # Prevents execution of eximstats service, which # is a wrapper for the eximstats program. mailer = "/usr/sbin/sendmail -t"
/etc/cron.daily の確認
cronに登録されている logwatch の設定を変更して
$ sudo vim /etc/cron.daily/00logwatch #!/bin/bash #Check if removed-but-not-purged test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0 #execute #/usr/sbin/logwatch --output mail # コメントアウト /usr/sbin/logwatch --output file # 追記 #Note: It's possible to force the recipient in above command #Just pass --mailto address@a.com instead of --output mail
/etc/con.daily/ssmtp の作成
logwatch が出力したレポートファイルを毎日自動で自分宛のメールアドレスに送信するようにします。
$ sudo vim /etc/cron.daily/ssmtp #! /bin/sh # send logwatch report to gmail { echo To: myaddress@gmail.com; echo From: myaddress@gmail.com; echo Subject: logwatch report; echo; cat /tmp/logwatch; } | ssmtp myaddress@gmail.com
/etc/cron.daily/dropbox_uploader の作成
ssmtp 同様に logwatch の出力したレポートファイルを Dropbox にアップロードして欲しいので /etc/cron.daily/dropbox_uploader を作成します。
標準出力に結果が返ると cron が自動的にメールを送信してくれますがここでは不要なので /dev/null にリダイレクトして非表示にしています。
$ sudo vim /etc/cron.daily/dropbox_uploader #! /bin/sh /usr/local/bin/dropbox_uploader -f /home/hiyoshi/.dropbox_uploader upload /tmp/logwatch_`date +%F`.txt /log/raspi/ >/dev/null
確認
一連の設定を確認します。
個別に実行
/etc/cron.daily/ にある 00logwatch, ssmtp, dropbox_uploader の3つのスクリプトを1つずつ個別に実行して問題がないか試します。
/etc/crontab の確認
個別に問題がないのを確認したら /etc/cron.daily/ 下のスクリプトが毎日何時に実行されるのか /etc/crontab 確認します。
デフォルトでは 6:25 に実行するように設定されているようです。
適当な時間に変更して試してみてもいいですが他のスクリプトも自動で実行される点には注意。
$ sudo vim /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
cron が実行され一連の処理が行われるのを確認して問題がなければ完了です。
参考リンク
logwatchによるログ監視 | server-memo.net