18 February 2010

(Ubuntu) Logwatchの結果をメールで送信する

Ubuntu 9.10でのLogwatchメール送信の設定メモ。

Logwatch インストール

# apt-get install logwatch

インストーラが自動的にcronのcron.dailyにスクリプトを作っているので、念のために確認する。

/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
#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail

デフォルトの設定ファイルをテンプレートからコピーする

設定ファイルが”標準ではインストールされない”ので、テンプレートよりコピーする。 なお、servicesディレクトリ内で、”チェックしたくない”ログに対する設定スクリプトはコピーしなくてもよい。

# cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
# cp /usr/share/logwatch/default.conf/services/* /etc/logwatch/conf/services/

テンプレートに存在しない、任意の解析レポートを作成したい場合は… 『logwatchでsyslogファイルの解析やhddのS.M.A.R.T.データ出力を行う』を参照。

sendmailでログを送信する設定

設定ファイルを編集する。

/etc/logwatch/conf/logwatch.conf
# Default Log Directory
# All log-files are assumed to be given relative to this directory.
LogDir = /var/log
 
# You can override the default temp directory (/tmp) here
TmpDir = /var/cache/logwatch
 
#Output/Format Options
#By default Logwatch will print to stdout in text with no encoding.
#To make email Default set Output = mail to save to file set Output = file
#Output = stdout
Output = mail
#To make Html the default formatting Format = html
Format = text
#To make Base64 [aka uuencode] Encode = base64
Encode = none
 
# Default person to mail reports to.  Can be a local account or a
# complete email address.  Variable Output should be set to mail, or
# --output mail should be passed on command line to enable mail feature.
#MailTo = root
MailTo = myname@example.com
 
# Default person to mail reports from.  Can be a local account or a
# complete email address.
MailFrom = Logwatch
 
#Archives = No
# Range = All
 
# The default time range for the report...
# The current choices are All, Today, Yesterday
Range = yesterday
 
# The default detail level for the report.
# This can either be Low, Med, High or a number.
# Low = 0
# Med = 5
# High = 10
Detail = Low
 
# The 'Service' option expects either the name of a filter
# (in /usr/share/logwatch/scripts/services/*) or 'All'.
# The default service(s) to report on.  This should be left as All for
# most people.
Service = All
 
mailer = "/usr/sbin/sendmail -t"

テスト

次のコマンドのいずれかを実行して、チェック結果のメールが着信するか確認すればよい。

# /etc/cron.daily/00logwatch
 ~ または ~
# logwatch

テスト時に、作業用ディレクトリ /var/cache/logwatch が無いとエラーが表示された場合は、作業用ディレクトリを作成する。

結果をテキストファイルに出力し、ユーザ指定のメール送信スクリプトを使う設定

/etc/cron.daily/00logwatch
#!/bin/bash
 
#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0
 
#output filename
strFile="/tmp/logwatch_"`date "+%Y-%m-%d_%Hh%Mm"`
 
#execute
/usr/sbin/logwatch > $strFile
 
# mail to
/usr/local/bin/ユーザ指定のメールスクリプト.pl --to=test@example.com --to_name="root (ThinkCentre M720q)" --subject="Logwatch report (Ubuntu 18.04)" --debug=0 $strFile
/etc/logwatch/conf/logwatch.conf
LogDir = /var/log
TmpDir = /var/cache/logwatch
 
#Output/Format Options
#By default Logwatch will print to stdout in text with no encoding.
#To make email Default set Output = mail to save to file set Output = file
Output = stdout
Format = text
Encode = none
 
# The default time range for the report...
# The current choices are All, Today, Yesterday
Range = yesterday
 
# The default detail level for the report.
# This can either be Low, Med, High or a number.
# Low = 0
# Med = 5
# High = 10
Detail = Low
 
# The 'Service' option expects either the name of a filter
Service = All