【问题标题】:New Relic 404, 422 and 500 Exceptions With Rails Dynamic Exception Handling使用 Rails 动态异常处理的新 Relic 404、422 和 500 异常
【发布时间】:2013-06-17 00:29:48
【问题描述】:

我正在运行一个 Rails 4.0.0.rc 应用程序,使用 New Relic 进行可用性/异常监控。我用这个 sn-p 修改了application.rb 以启用动态异常页面:

config.exceptions_app = self.routes

但是,我不再在 New Relic 中看到 404422500 异常。知道如何找回它们吗?

编辑

注意:这是控制器处理状态的样子:

class ErrorsController < ApplicationController

  # GET /404
  def missing
    render status: 404
  end

  # GET /422
  def unprocessable
    render status: 422
  end

  # GET /500
  def exception
    render status: 500
  end

end

【问题讨论】:

    标签: ruby-on-rails newrelic


    【解决方案1】:

    听起来您想手动调用 NewRelic::Agent.notice_error。

    您可以从 Rack 环境中重建请求对象,并根据需要构建异常。

    类似这样的:

    request = Rack::Request(env)
    
    options = {
      :uri => request.url,
      :referrer => request.referrer,
      :request_params => request.params
    }
    
    NewRelic::Agent.notice_error(your_custom_exception, options)
    

    请注意,请求参数将按原样传输,因此请小心过滤任何敏感内容。

    来源:
    我为 New Relic 工作,担任 Ruby 代理工程师
    NoticedError 的文档:http://rubydoc.info/gems/newrelic_rpm/frames

    【讨论】:

      【解决方案2】:

      您必须在错误控制器中将 html 状态代码设置为正确的值。例如,如果你有这样的事情:

      类 ErrorsController

       # 404
       def not_found 
         render "not_found", status: 404
       end
      

      结束

      否则 rails 会用 200 状态码渲染错误页面,而新的 relic 不会将其作为错误识别。

      【讨论】:

      • 对不起,我最初没有提到,但我正在返回提到的状态代码(我更新了我原来的问题)。
      猜你喜欢
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      相关资源
      最近更新 更多