Ubuntu Linux

Linux/Ubuntu で大量のログを解析してレポートを作成してくれる logwatch のインストールと設定についての覚え書きです。

 

 

環境

Raspberry Pi (Rasbian)

Debian系なので Ubuntu もおおよそ同様のはず。

インストール

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt install logwatch

変更前の確認

設定を変更する前に logwatch を実行してみます。

初期設定では 標準出力(stdout) に解析結果のレポートが表示されます。

$ sudo logwatch

設定

インストール直後の状態では簡易レポートを毎日メールアドレス宛てに送信してくれます。

ここでは4つのことを行うように設定を変更します。

  1. 簡易なレポートから詳細なレポートに変更する。
  2. レポートをファイルに保存する。
  3. 保存したレポートをメールアドレスに送信する。
  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

【Linux/Ubuntu】logwatchのインストールと設定方法
Tagged on:         

コメントを残す