我有一个支持HAProxy的rails应用程序,我想忽略来自HAProxy服务器ping的所有Rails日志记录。服务器正在以1 /秒为单位进行ping操作,并且真正使日志文件变得混乱。
答案 0 :(得分:1)
尚未对此进行测试,但它应该有效:
class Rails::Rack::Logger
def call_with_filter(env)
if env['REMOTE_ADDR'] == '10.0.0.1'
@app.call(env)
else
call_without_filter(env)
end
end
alias_method_chain :call, :filter
end
请参阅railties-3.0.7 / lib / rails / rack / logger.rb作为原文。
答案 1 :(得分:0)
我选择的解决方案更具系统性。我在公共目录中创建了一个静态文本文件,并切换HAProxy以将其用作ping位置。没有日志记录,也没有代码解决方案那么复杂。
我确实尝试了上面的例子并且能够使它工作,但是对于这个问题做一个猴子补丁似乎没有必要,但是如果要求有点复杂(即HAProxy必须击中特定的控制器)那我就选择Roman's solution
答案 2 :(得分:0)
我最终选择的解决方案技术相对较低。
使用HAProxy的目标不仅仅是负载平衡,还要确保正在进行定向流量的节点实际上已启动。这意味着我们希望HAProxy不仅可以访问服务器以查看它是否已启动,还可以测试Nginx和Passenger是否正常运行。
我将一个静态文本文件放在rails项目的公共资产中,让HAProxy命中该文件。该文件将由完整堆栈提供,并且是服务启动的一个不错的指示器。作为公共资产,点击不会出现在日志中,并且垃圾邮件会被停止。
虽然这不会对Rails堆栈进行更深入的测试,但是实现的时间比任何编码解决方案都要低,它不会给应用程序增加任何额外的复杂性,并且可以用于任何未来的应用程序。