rsyslog の設定

・注意点

・syslog や syslog-ng とは競合するので、削除するか起動しないようにしておく
・モジュールを追加する際はソースからコンパイルする必要あり。動的追加不可?

・設定ファイル

/etc/sysconfig/rsyslog
 起動オプション
/etc/rsyslog.conf
 全体設定
/etc/rsyslog/*.conf
 個別設定

・前準備

# vi /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c3"

※バージョンをあげて起動

・全体設定

# vi /etc/rsyslog.conf
$ModLoad imuxsock

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

※UNIXソケットからログを受信できるようにする
※リモートホストのログをUDPの514ポートで受け付ける
※リモートホストのログをTCPの514ポートで受け付ける

・ログを出力

# vi /etc/rsyslog.conf
mail.*	 /var/log/custom.log;

※mail.* に該当するメッセージを /var/log/custom.log に出力する

プレフィックスをつけてログを出力

# vi /etc/rsyslog.conf
$template mytemplate,"日時:%timegenerated% 内容:%msg%\n"
mail.*	 /var/log/custom.log;mytemplate

※mail.* に該当するメッセージを /var/log/custom.log に対して mytemplate の形式で出力する

・動的な名前でログを出力

# vi /etc/rsyslog.conf
$template DynamicFileName1,"/var/log/messages_%$year%%$month%%$day%"
*.*	 ?DynamicFileName1

※/var/log/messages_20121210 のようなファイル名でログを出力

・ホスト名や機器名をつけてログを出力

# vi /etc/rsyslog.conf
$template DynamicFileName3,"/var/log/syslog/%hostname%/%$year%/%$month%/%day%/%programname%.log"
*.*	 ?DynamicFileName3

・主なマクロ

msg
 ログメッセージ
hostname
 ログを出力したホストの名前
fromhost
 ログを受け取ったホストの名前
programname
 プログラム名
syslogfacility
 ファシリティ(数字)
syslogseverity
 プライオリティ(数字)
syslogpriority
 syslogseverityと同等
timegenerated
 ログを受け取った日時
timereported
 ログが出力された日時
timestamp
 timereportedと同等
$now
 現在時刻(YYYY-MM-DD)
$year
 現在の年(YYYY)
$month
 現在の月(MM)
$day
 現在の日(DD)
$hour
 現在の時(hh)
$minute
 現在の分(mm)

※詳細は http://www.rsyslog.com/doc/property_replacer.html を参照。