正确的 rsyslog 配置

正确的 rsyslog 配置

我正在尝试设置系统日志服务器,但它似乎没有按预期工作。我的客户端似乎没有记录到它。

服务器 Ubuntu 12.04(192.168.1.10)

客户端Ubuntu 14.04(192.168.1.26)

服务器配置/etc/rsyslog.conf:

$ModLoad imuxsock 
$ModLoad imklog  
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$RepeatedMsgReduction on
$FileOwner syslog
$FileGroup adm

$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

$WorkDirectory /var/spool/rsyslog

$IncludeConfig /etc/rsyslog.d/*.conf

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log"

我确实在 /var/log 目录和子目录中执行了 chown syslog:syslog。

客户端配置/etc/rsyslog.conf:

将其添加到conf文件的顶部

*.* @192.168.1.10:514

在两台主机上重新启动了 rsyslog 守护进程,但服务器上的 /var/logs 中似乎没有填充任何日志

对我可能做错的事情有什么想法吗?

答案1

在我的案例中(Ubuntu 12.04),具有类似配置的目录也未创建。事件被记录到现有文件中,但没有标记主机名,因此无法看出它(几乎)正在工作。

我建议:

  1. 验证是否正在接收流量:在服务器上,尝试:

    sudo tcpdump tcp 端口 514

  2. 配置客户端以发送正确的主机名。将此行添加到 /etc/rsyslog.conf:

    $LocalHostName [客户端]

  3. 验证来自 [客户端] 的日志条目是否出现在 [服务器] 日志文件中。

  4. 您的服务器配置文件定义了一个名为 TmplAuth 的模板,但没有任何东西使用它。在其后立即添加此行:

    *.* ?TmplAuth

当然,每当您更改配置文件时,您都需要在该机器上重新启动 rsyslog。

完成上述操作后,我的 TmplAuth 已应用于所有日志(包括本地日志):创建了目录并为每个程序生成了一个日志文件。这虽然不是我想要的,但代表了一大进步。我现在正在考虑更改模板,而不是思考它为什么不起作用。

答案2

我无法评论,所以我添加了一个新答案:最有可能的问题是,正如 Zaq 所说,TmplAuth 旨在用于写入动态文件名。这部分实际上缺失了。

除此之外,我们(rsyslog 项目)经常看到此类问题是由以下原因引起的:

  • AppArmor 设置(不太可能)
  • 防火墙配置(可能)

所以你肯定想看看这个。

相关内容