我们在应用程序控制器中有这个beofre_filter,以便首先记录HTTP_REFER
def init_newrelic_agent
::NewRelic::Agent.add_custom_parameters(
request_referer: request.referer,
request_url: request.url,
request_user_agent: request.user_agent
)
end
仅当请求落在rails控制器中时,才会添加上述自定义参数。 然而,有些请求甚至没有降落在那里,因为他们用假路线打我们的应用程序。 如果甚至在控制器初始化之前发生了一些错误,你将如何配置rails以在每个应用程序跟踪的newrelic中记录此params?
答案 0 :(得分:3)
对于那些感兴趣的人,在具体实施之下:
#config/initializers/newrelic.rb
Rails.configuration.middleware.use NewRelic::Rack::Custom
#app/middlewares/newrelic/rack/custom.rb
module NewRelic
module Rack
class Custom
def initialize(app)
@app = app
end
def call(env)
init_newrelic_agent(env)
@app.call(env)
end
def init_newrelic_agent(env)
::NewRelic::Agent.add_custom_parameters(
request_referer: env['HTTP_REFERER'],
request_url: env['REQUEST_URI'],
request_user_agent: env['HTTP_USER_AGENT']
)
end
end
end
end
答案 1 :(得分:1)
从3.9.0开始的New Relic Ruby代理的版本可以跟踪Rack middlewares中的事务,因此如果这些请求没有访问Rails控制器,那么添加您自己的包含这些参数的中间件可能会起作用。对于此类中间件的添加,Rack::Request
是一个很好的选择。