我正在尝试设置系统日志服务器,但它似乎没有按预期工作。我的客户端似乎没有记录到它。
服务器 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),具有类似配置的目录也未创建。事件被记录到现有文件中,但没有标记主机名,因此无法看出它(几乎)正在工作。
我建议:
验证是否正在接收流量:在服务器上,尝试:
sudo tcpdump tcp 端口 514
配置客户端以发送正确的主机名。将此行添加到 /etc/rsyslog.conf:
$LocalHostName [客户端]
验证来自 [客户端] 的日志条目是否出现在 [服务器] 日志文件中。
您的服务器配置文件定义了一个名为 TmplAuth 的模板,但没有任何东西使用它。在其后立即添加此行:
*.* ?TmplAuth
当然,每当您更改配置文件时,您都需要在该机器上重新启动 rsyslog。
完成上述操作后,我的 TmplAuth 已应用于所有日志(包括本地日志):创建了目录并为每个程序生成了一个日志文件。这虽然不是我想要的,但代表了一大进步。我现在正在考虑更改模板,而不是思考它为什么不起作用。
答案2
我无法评论,所以我添加了一个新答案:最有可能的问题是,正如 Zaq 所说,TmplAuth 旨在用于写入动态文件名。这部分实际上缺失了。
除此之外,我们(rsyslog 项目)经常看到此类问题是由以下原因引起的:
- AppArmor 设置(不太可能)
- 防火墙配置(可能)
所以你肯定想看看这个。