小编cwj*_*ton的帖子

如何让 rsyslogd 记录服务器的 FQDN 而不是它的短主机名?

我正在尝试在 Ubuntu 10.04 LTS 上使用股票 rsyslogd (4.2.0-2ubuntu8.1) 实现一个简单的集中式系统日志服务器。在这一点上,我的所有客户端节点都将日志发送到中央服务器,但是客户端发送的日志消息包含它们的短主机名而不是它们的 FQDN。

根据 Ubuntu rsyslogd 联机帮助页:

如果远程主机与主机位于同一域中,rsyslogd 正在运行,则只会记录简单的主机名而不是整个 fqdn。

这对我来说是有问题的,因为我在环境之间重复使用短名称,例如 core1.example.com 和 core1.stg.example.com 都将它们的消息记录为 core1。

客户端和服务器都有相同的 /etc/default/rsyslog:

RSYSLOGD_OPTIONS="-c4"
Run Code Online (Sandbox Code Playgroud)

和相同的 /etc/rsyslogd.conf 文件:

$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Run Code Online (Sandbox Code Playgroud)

客户端有这个 /etc/rsyslog.d/remote.conf 文件,告诉他们发送到远程服务器:

*.* @@syslog.example.com
Run Code Online (Sandbox Code Playgroud)

并且服务器使用这个 /etc/rsyslog.d/server.conf 文件:

$ModLoad imtcp
$InputTCPServerRun 514
$DirGroup root
$DirCreateMode 0755
$FileGroup root
$template PerHostAuth,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log"
$template PerHostCron,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log"
$template PerHostSyslog,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog"
$template PerHostDaemon,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log"
$template PerHostKern,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log"
$template PerHostLpr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log"
$template PerHostUser,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log"
$template PerHostMail,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log"
$template PerHostMailInfo,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info" …
Run Code Online (Sandbox Code Playgroud)

ubuntu logging rsyslog

25
推荐指数
3
解决办法
7万
查看次数

标签 统计

logging ×1

rsyslog ×1

ubuntu ×1