我正在尝试配置 rsyslog(Ubuntu 12.04 Server)来记录来自路由器的事件。我发现这个旧的ubuntu 论坛帖子这让我走到了那里的大部分路程。
到目前为止,我能够从路由器获取记录的事件。但是,由于我没有登录,因此/var/log/syslog
我尝试设置一个工作过滤器/etc/rsyslog.conf
以将记录的事件放入/var/log/linksys.log
。这就是我遇到麻烦的地方。
首先我尝试通过路由器 IP 地址进行过滤,如下所示:
:fromhost-ip, isequal, "192.168.2.1" /var/log/linksys.log & ~
这成功地重定向了我想要的日志,唯一的问题是现在我在 auth.log 中没有收到任何 SSHD 日志。不用说,这是不可接受的。
接下来我尝试按每个事件日志中出现的路由器名称进行过滤:
:msg,contains, "RV042" /var/log/linksys.log & ~
尽管这既不记录也不阻止任何内容。
所以我被难住了。我不知道为什么 SSHD 会被过滤器过滤掉:fromhost-ip
。SSHD 在装有 rsyslog 的机器上是本地的(192.168.2.2)。我对此感到非常沮丧,任何建议都非常感谢。
答案1
我找到了!这些链接有帮助:
http://www.rsyslog.com/tag/udp/
http://www.rsyslog.com/doc/multi_ruleset.html
这是我所做的:
打开文件/etc/rsyslog.d/50-default.conf
并在文件顶部,在所有其他默认过滤器之前,我添加了:
# process remote messages
# define new ruleset and add rules to it:
$RuleSet remote
*.* /var/log/linksys.log
# only messages not from 192.168.2.1 make it past this point
# bind ruleset to UDP listener
$InputUDPServerBindRuleset remote
# and activate it:
$UDPServerRun 514
# switch back to the default ruleset:
$RuleSet RSYSLOG_DefaultRuleset
答案2
/etc/rsyslog.conf
不是要编辑的正确文件。您确实需要设置一个单独的.conf
文件:
$ sudo nano /etc/rsyslog.d/20-router.conf
然后添加所需的配置:
:fromhost-ip, isequal, "192.168.2.1" /var/log/linksys.log
& ~
这不会混淆任何其他日志条目。我自己试过,效果很好。
谢谢http://nickhumphreyit.blogspot.co.uk/2012/09/how-to-setup-syslog-server-on-ubuntu.html在放弃文档之后,给了我答案。
您可能还想添加一个logrotate
文件/etc/logrotate.d/linksys
:
/var/log/linksys.log {
daily
rotate 7
delaycompress
compress
notifempty
missingok
}