rsyslogのログ転送設定でhostnameがFQDNにならない問題

rsyslogで同一ドメイン内でログ転送設定を行なっている時にhostnameがFQDNにならなくて戸惑ったのでメモ。


どういうことかというと、
rsyslogサーバー(syslogを受け取るサーバー)が、

syslog.sample.com


クライアントサーバー(syslogを送るサーバー)が、

client.sample.com

で、rsyslogサーバーに転送されてきたログをクライアントサーバーのFQDNで
ディレクトリを作成して、ログの中のホスト名をFQDNにしたいと思い設定していました。


想定としては、rsyslogサーバーの
/var/log/client.sample.com/messages
というFQDNのディレクトリに
↓こんな感じのログを転送して出力したいのですが、

May 15 00:00:01 client.sample.com CROND[7698]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
May 15 00:10:01 client.sample.com CROND[7699]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
May 15 00:20:01 client.sample.com CROND[7700]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)

実際は
/var/log/client/messages
というFQDNではなく、ホスト名のディレクトリが出来て
ログ出力は↓こんな感じになってしまいました。

May 15 00:00:01 client CROND[7698]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
May 15 00:10:01 client CROND[7699]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
May 15 00:20:01 client CROND[7700]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)

そこで、↓こちらを参照したところ
http://www.rsyslog.com/doc/rsyslog_conf_global.html

$PreserveFQDN [on/off) - if set to off (legacy default to remain compatible to sysklogd), the domain part from a name that is within the same domain as the receiving system is stripped. If set to on, full names are always used.

どうもrsyslogサーバーとクライアントサーバーが同一ドメインだとFQDNでなくホスト名表示になるっぽい?


ということで、

クライアントサーバー(syslogを送るサーバー)の
/etc/rsyslog.conf
に以下を追記したところ無事FQDNになりました!

$PreserveFQDN on


rsyslogサーバー、クライアントサーバー共に環境は↓です。

OS CentOS 6.2 64bit
rsyslog rsyslog-4.6.2-12.el6.x86_64