我正在使用 Amazon Linux AMI 版本 2015.03,我正在尝试通过在 /etc/rsyslog.d 中删除一个 conf 文件来配置 rsyslog 以将日志重定向到远程日志服务器(在本例中为 logstash)。
远程日志配置似乎运行良好,但日志仍然写入 /var/log/messages。这是一个问题,因为它们占满了磁盘。
我的配置文件如下所示:
# Log docker generated log messages to logstash
:syslogtag, startswith, "docker" @x.x.x.x:5000
& ~
在对其他一些系统进行调查后,我发现 Amazon Linux 中默认存在的 rsyslog.conf 文件在 conf 文件的最末尾包含以下指令:
$IncludeConfig /etc/rsyslog.d/*.conf
我使用过的其他系统将此指令放在配置文件的更高位置……肯定在默认日志配置之前。在我看来,由于这个原因,默认配置无法被覆盖。我是不是漏掉了什么?
答案1
我觉得默认值无法被覆盖。我是不是漏掉了什么?
不要认为这是覆盖默认值,但您在其他方面是正确的。在您的文件中, 正在& ~
丢弃日志消息,从而阻止进一步处理。如果这发生在 的内置处理之上/var/log/messages
,则日志消息将被删除,从而从该文件中排除。由于您的$IncludeConfig
发生在之后,因此您的 drop 语句也是如此。
你有两个选择;
- 将语句上移
$IncludeConfig
。 - 修复日志轮换以使磁盘不会填满。
我个人更喜欢后者,因为我喜欢在本地保存日志(一段合理的时间),并将它们转发到远程服务器进行聚合/保留。有日志消息可用/var/log/messages
将使故障排除更加方便,也使其他使用系统的人更容易,因为这是预期位置。