2014年1月13日月曜日

rsyslog ログを転送するとTAGがかけてしまう

今回は、rsyslogでログを転送した際に、TAG部分で32文字以降が欠けてしまう件についてです。
#検証を行った環境は、転送元・転送先ともにOSがCentOS6.5でrsyslogはver7.4.8です


ログの転送先(ログサーバ側)で、転送されてきたCRON系のログを確認していたところ、本来

Jan 13 16:01:01 host run-parts(/etc/cron.hourly)[1197]: starting 0anacron

と記録されているものが、

Jan 13 16:01:01 host run-parts(/etc/cron.hourly)[1197 starting 0anacron

と、32文字以降の2文字(”]”と”:”) が省略されていることに気がつきました。


調べてみるとまんまずばりの情報が下記にありました。

http://www.rsyslog.com/sende-messages-with-tags-larger-than-32-characters/


RFC的には、ログのTAG部分は32文字を最大とするのが正解で、rsyslogでは転送用templateで32文字の制限が行われています。

なので、ログの転送元で新しく”32文字の制限を行わない”templateを定義すれば、TAG部分が欠けてしまう現象は回避できます。
具体的には、下記のようにします。

# 以下は改行されていますが、1行で記述する必要があります
template(name="ForwardFullTag" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3339%
 %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")


#  以下は無理に一行にまとめる必要はありません
# (転送先のTargetは環境に合わせて変更してください)
*.* action(type="omfwd"
 Target="192.168.233.14"
 Port="514"
 Protocol="tcp"
 Template="ForwardFullTag"
)

0 件のコメント:

コメントを投稿