如何让 Haproxy 不记录本地请求?

如何让 Haproxy 不记录本地请求?

我正在尝试清理机器上的一些日志杂乱,首先删除服务器本身生成的请求。我的缓存预热器全天候运行,我不希望这些缓存污染日志。

我可以通过dontlog为本地 IP 添加来让 apache 停止记录本地请求:

SetEnvIf Remote_Addr "RE\.DA\.CT\.ED" dontlog
CustomLog "|logger -p local3.info -t http" combined env=!dontlog

现在我正在寻找类似的东西来放入 Haproxy 日志的配置中。如何防止127.0.0.1请求写入 Haproxy 日志?




更新:2/15/11

我使用优秀的洛格利服务从云中提取日志,但我看到大量如下日志:

2011 Feb 15 06:09:42.000 [REDACTED] http: RE.DA.CT.ED - - [15/Feb/2011:06:09:42 -0500] "HEAD /search/Nevad/predictive/txt HTTP/1.0" 200 - "-" "Wget/1.10.2 (Red Hat modified)"
2011 Feb 15 06:09:42.000 127.0.0.1 haproxy[10390]: 127.0.0.1:58408 [15/Feb/2011:06:09:42] www i-5dd7a331.0 0/0/0/8/8 200 210 - - --NI 0/0/0 0/0 "HEAD /search/Nevad/predictive/txt HTTP/1.1"

我希望它们消失。这个问题的重点是如何haproxy首先删除该日志行,使其不写入服务器端日志。

答案1

目前还无法根据 ACL 禁用日志(尽管这是计划中的功能)。同时,您应该了解日志是由前端定义的。因此,您可以有两个前端,一个是公共的,一个是私有的,它们使用相同的后端。私有前端不会记录日志,而公共前端会记录日志。

一般情况下,不建议禁用日志记录,这会使检测错误的时间更长。您也可以使用“option dontlog-normal”仅记录意外事件(超时、错误等)。这可以明显减少日志量,并且您仍会保留您应该关注的事件的踪迹。

答案2

HAProxy 文档在第 8.3.1 节中谈到了一些过滤问题。文档中说,可以使用“monitor-net”声明来禁用外部测试的日志记录。不过不确定这是否会影响流量 - 文档似乎表明这会影响流量,因此请谨慎使用。

您可能还想为内部地址创建一个 ACL 列表,然后关闭这些匹配项的日志记录。不过,我不是 HAProxy 专家,所以我会将类似的建议配置留给其他人!

相关内容