【问题标题】:Is there way to push NewRelic error manually?有没有办法手动推送 NewRelic 错误?
【发布时间】:2012-09-26 17:38:03
【问题描述】:

在我们的 Rails 应用程序中,我们挽救了 ApplicationController 上的大多数异常以提供正确的 API 响应,但仍希望使用 ErrorCollector 跟踪发生的错误。有没有办法手动向 NewRelic 发送错误?

【问题讨论】:

    标签: ruby-on-rails newrelic


    【解决方案1】:

    根据我在 New Relic 代理代码中看到的你可以做的事情

    NewRelic::Agent.notice_error(exception, options)

    我已经对此进行了测试,并在我的堆栈中运行了它

    这是控制器中的一个示例:

    class ApplicationController < ActionController::Base
      rescue_from ActiveRecord::RecordInvalid, with: :rescue_invalid_record
    
      private
    
      def rescue_invalid_record(exception)
        NewRelic::Agent.notice_error(exception)
      end
    end
    

    【讨论】:

    • 这里是这个文档:rdoc.info/github/newrelic/rpm/NewRelic/Agent:notice_error 它基本上是他的解决方案中包含的方法 Igor 的别名,除了它返回 nil 而不是异常。因此,虽然它的行为略有不同,但本质上是相同的,而且不那么冗长。
    • 为了添加更多上下文,我在前面加上:NewRelic::Agent.add_custom_attributes({ custom_params: params.to_unsafe_h.merge(current_user: current_user.id), uri: request.original_url })
    【解决方案2】:

    不确定它是否是推荐的使用方式,但这很有效:

    NewRelic::Agent.agent.error_collector.notice_error( exception )
    

    【讨论】:

    • 我在 New Relic 工作。虽然这种方法在今天可能有效,但它不是我们公共 API 的一部分,因此不应该使用 - 它可能会在未来的任何时候发生变化。正确的使用方法是NewRelic::Agent.notice_error,如nort 的回复中所述。任何未在我们的公共 API docs 中记录的内容都属于同一类别。
    【解决方案3】:

    用于通知错误和增加错误指标的 API 调用的完整文档是此处的 New Relic Ruby Agent API 文档http://rdoc.info/github/newrelic/rpm/NewRelic/Agent/Transaction.notice_error

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2012-01-14
      相关资源
      最近更新 更多