【问题标题】:New Relic log http_referer on every requestNew Relic 在每个请求上记录 http_referer
【发布时间】:2014-11-11 19:28:25
【问题描述】:

我们在应用程序控制器中有这个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 中?

【问题讨论】:

    标签: ruby-on-rails middleware newrelic


    【解决方案1】:

    有兴趣的可以看下具体实现:

    #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
    

    【讨论】:

      【解决方案2】:

      从 3.9.0 开始的 New Relic Ruby 代理版本可以跟踪 Rack middlewares 中的事务,因此,如果这些请求没有到达 Rails 控制器,添加您自己的包含这些参数的中间件可能会起作用。 Rack::Request 是此类中间件添加的不错选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-30
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-02
        • 1970-01-01
        相关资源
        最近更新 更多