7

我正在使用 New Relic Java API 来监控由 OAuth 保护的 Jersey Rest 应用程序。

在我们的应用程序中,每当有人试图做未经授权的事情时,我们都会抛出异常。虽然这些是例外情况,但它们不需要通过 New Relic 错误报告进行监控。

我在 Java API 上看到有一种方法可以确保向 New Relic 报告错误(https://docs.newrelic.com/docs/java/java-agent-api NewRelic.noticeError(Throwable throwable) )

有什么方法可以禁止报告特定类型的异常?我的想法类似于 NewRelic.ignoreError(Class clazz) ,我可以在其中将某些类型的异常类标记为忽略报告。

4

3 回答 3

9

我为 New Relic 工作。

虽然没有 Java 代理 API 调用可以忽略错误,但我已提交功能请求以创建此类调用。但是,这在短期内对您没有帮助,因为我们无法承诺何时或是否会实施此计划的时间表。

因此,这就是我们的代理所称错误的本质——也许您可以稍微更改您的代码,以便我们的代理不会注意到错误?实际上,一旦您处理了异常并且不调用 noticeError() 方法,该异常将不会被归类或记录为 New Relic 中的错误。您是否有机会添加一个异常处理程序来呈现您的 40x 页面,而不是让这些异常未经处理?

您还可以选择在整个事务上忽略Transaction(),这样也不会将其归类为错误。这是次优的,因为您最好查看所有生产流量,以了解错误处理程序本身何时变慢或最终创建自己的(意外)错误,但这也应该有效。

最后,您可以忽略代理配置中的 HTTP 状态代码和特定异常名称 - newrelic.yml(如果您使用客户端配置)或应用程序设置页面(https://rpm.newrelic.com/accounts/X/ applications/Y/edit ) 页面,如果您使用服务器端配置。

请注意,通过代理配置忽略状态代码或异常名称只会阻止单独记录错误,但仍会增加错误计数/错误率,您可能会对此发出警报;处理异常或调用 ignoreTransaction() 也会将其从错误率中清除。

如果这些方法都不适合您,我们很乐意与您进一步交谈,但您应该在https://support.newrelic.com上打开支持票,因为这不是讨论的正确论坛。

于 2013-11-12T23:49:25.770 回答
6

我也为New Relic工作,既然愚者是我的死敌,我不同意!不是真的,但我会注意到我认为 newrelic.yml 配置文件中的 ignore_errors 设置是这里的最佳选择:您可以指定要忽略的类名。否则您可以使用ignore_status_codes,我认为您的“未授权”错误可能具有一致的错误代码。

这也会导致您的错误率下降(在代理的早期版本中,ignore_errors 只会阻止跟踪而不会更改错误率,这在 3.0 版之后已修复)。

于 2013-11-30T19:26:52.747 回答
-1

I don't work for New Relic, but to state the final option. Is it possible for your application not to return an error, and instead return 200 but give details of the error in the reply.

Not ideal but it's an option.

于 2015-11-25T12:25:03.513 回答