我有一个在 HAProxy 后面的 rails 应用程序,我想忽略来自 HAProxy 服务器的 ping 的所有 Rails 日志记录。服务器正在 ping ~1/sec,并且确实弄乱了日志文件。
问问题
331 次
3 回答
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 的原文。
于 2011-05-04T19:11:59.473 回答
0
我最终采用的解决方案技术含量相对较低。
使用 HAProxy 的目的不仅仅是为了负载平衡,而是确保被引导流量的节点实际上是启动的。这意味着我们希望 HAProxy 不仅要访问服务器以查看其是否启动,还要测试 Nginx 和Passenger 是否已启动并正常运行。
我将一个静态文本文件放在 rails 项目的公共资产中,并让 HAProxy 命中该文件。该文件将由完整堆栈提供,并且是服务已启动的良好指标。作为一项公共资产,命中不会出现在日志中,并且垃圾邮件被停止。
尽管这并未对 Rails 堆栈进行更深入的测试,但实现时间比任何编码解决方案都要短,它不会给应用程序增加任何额外的复杂性,并且可以滚动到任何未来的应用程序中。
于 2011-05-26T12:54:34.527 回答