我使用这篇文章的技巧,通过rsyslogd设置了haproxy logging,并且一切似乎都正常。 日志文件获取日志消息。
但是,来自haproxy的每个日志消息也都显示在/var/log/syslog
。 这意味着,一旦服务器上线,系统日志将是无用的,因为它将与haproxy日志消息运行。
我想从/var/log/syslog
过滤出这些消息。 在阅读rsyslogd文档之后,我尝试更改文件/etc/rsyslog.d/50-default.conf
:
*.*;auth,authpriv.none;haproxy.none -/var/log/syslog
我只是添加了;haproxy.none
部分。 重新启动rsyslogd后,它完全停止工作,直到我恢复了我的更改。
我究竟做错了什么?
你也可以做以下的事情,使它们不会进入任何其他日志:
local0.* -/var/log/haproxy.log & ~
& ~
意味着不要把其他规则中其他地方的匹配。
在rsyslogd的第7版中已经弃用& ~
,build议您使用& stop
来代替。 您可以在v7compatibility页面的这一部分阅读更多关于它的信息 。
omruleset和discard(〜)动作已被弃用
两者都继续工作,但已被替代更好的替代品。
放弃行为(代字符)已被“停止”RainerScript指令取代。 它被认为更直观,并提供稍好的性能。
omruleset模块已被“call”RainerScript指令取代。 调用允许像子例程那样执行一个规则集,并且执行比omruleset更高的性能。 请注意,omruleset可以运行在asynchronous队列中。 这是一个比预期的效果更重要的一面,并没有被通话声明所支持。 如果需要这种效果,可以简单地通过asynchronous运行被调用的规则集操作(在任何情况下是正确的方式来处理这个操作)来模拟。
请注意,弃用的模块在使用时会发出警告消息。 他们说这个构造已经被弃用,哪个语句被用作replace。 这不会影响操作:这两个模块仍然可以完全运行,并且不会在v7时间段内被移除。
所以对于HAProxy来说就是这样的:
$ more /etc/rsyslog.d/haproxy.conf local2.* /var/log/haproxy.log & stop
至于它是如何工作的, & stop
告诉rsyslogd放弃任何与之前匹配的规则匹配的附加消息。 为了保证这个规则早日得到,你可以把文件的名字从/etc/rsyslog.d/haproxy.conf
改成/etc/rsyslog.d/00-haproxy.conf
。
好的,我明白了。 这就是我的/etc/rsyslog.d/20-haproxy.conf
样子:
$ModLoad imudp $UDPServerRun 514 local0.* -/var/log/haproxy_0.log local1.* -/var/log/haproxy_1.log
我将50-default.conf
的行改为:
*.*;auth,authpriv,local0,local1.none -/var/log/syslog
而现在它似乎在做我想做的事情。
haproxy日志有一个更好的解决scheme。
/dev/log
根据rsyslog的官方手册需要configuration来监听networking套接字:
# to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog
但是你只能使用rsyslog套接字:
rsyslog.d / haproxy.conf:
# HAproxy local socket $AddUnixListenSocket /var/lib/haproxy/dev/log :programname, contains, "haproxy" /var/log/haproxy.log & stop
haproxy.cfg:
global log /dev/log daemon chroot /var/lib/haproxy .......
我宁愿不要乱用文件的顺序,所以我添加一个local0.none的。 行input。 configuration如下所示:
*.info;mail.none;authpriv.none;cron.none;local2.none /var/log/messages local2.* /var/log/haproxy.log
(在CentOS 7上testing)
希望有所帮助!