2011/09/16 CentOS5.5





読みやすい形式でログを保存する

ここではrsyslogの実践的なconf記述を記します。
インストールについては別項「rsyslogをインストールする」を参照してください。

rsyslog.confの例
読みやすい形式でログを出力する


rsyslog.confの例(デフォルトのコメントアウト部は省いてあります)
#$ModLoad immark   # provides --MARK-- message capability
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # kernel logging (formerly provided by rklogd)

$template customformat,"%timegenerated% %HOSTNAME% %syslogtag%%msg%\n"
$template logFileName,"/var/log/syslog/%fromhost%/messages_%fromhost%_%$year%%$month%%$day%.log"
$template mailFileName,"/var/log/syslog/%fromhost%/mail_%fromhost%_%$year%%$month%%$day%.log"

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
#*.info;mail.none;authpriv.none;cron.none                -/var/log/messages
*.info;mail.none;authpriv.none;cron.none                -?logFileName;customformat
*.info;mail.none;authpriv.none;cron.none                @remoteserver

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
#mail.*                                                  -/var/log/maillog
mail.*                                                  -?mailFileName;customformat

$ModLoad ommail

$ActionMailSMTPServer mailserver.address
$ActionMailFrom admin@example.local
$template mailsubject,"Syslog Warning"
$template mailbody,"%fromhost%\r\n%msg%"
$ActionMailSubject mailsubject
$ActionExecOnlyOnceEveryInterval  -1

$ActionMailTo admin-ml@example.local
if $fromhost-ip == '192.168.1.100' and $msg contains 'System Warning' then :ommail:;mailbody

$ActionMailTo admin-ml@example.local
if $fromhost-ip != '127.0.0.1' and $msg contains 'authenticated failure' and $syslogfacility-text == 'daemon' then :ommail:;mailbody

$ActionMailTo administrator@example.local
if $fromhost-ip =='192.168.1.254' and $syslogfacility-text == 'syslog' and $syslogseverity-text == 'crit' then :ommail:;mailbody

# Log cron stuff
cron.*                                                  -/var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          -/var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

# UDP Syslog Server:
$ModLoad imudp.so  # provides UDP syslog reception
$UDPServerRun 514 # start a UDP syslog server at standard port 514




読みやすい形式でログを出力する
2011-09-15T00:37:41+09:00 localhost kernel: Kernel logging (proc) stopped.
デフォルト

カスタム
Sep 15 10:11:49 localhost kernel:imklog 5.8.5, log source = /proc/kmsg started.

rsyslogでデフォルトで出力されるログはいまいち読みづらいです。全ての原因はTを挟んでいるのと、+9時間のJST調整です。
この出力形式を調整し、syslogと同じ形式します。

rsyslog.conf

$template customformat,"%timegenerated% %HOSTNAME% %syslogtag%%msg%"
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;customformat
*.info;mail.none;authpriv.none;cron.none                -?logFileName;customformat

テンプレートで形式を設定し、ログ出力の設定の後ろにセミコロンでフォーマットを繋げます。
rsyslogを再起動して、ログの出力形式を確認します。
なぜか二回再起動しないと有効にならないことがあります。

本家にて、他のプロパティ値もあります。

条件式が複雑になると、動作は確認は必須です。
loggerコマンドでログを出力し、結果を確認します。

#logger -p daemon.crit "System Warning"






prev.gif