我正在使用New Relic Java API来监控由OAuth保护的Jersey Rest应用程序。
在我们的应用程序中,只要有人试图做一些未授权的事情,我们就会抛出异常。虽然这些是例外,但它们不需要通过New Relic Error报告进行监控。
我在Java API上看到有一种方法可以确保向New Relic报告错误(https://docs.newrelic.com/docs/java/java-agent-api NewRelic.noticeError(Throwable throwable))
有没有办法抑制特定类型的异常报告?我的想法就像NewRelic.ignoreError(Class clazz),我可以将某些类型的异常类标记为忽略报告。
答案 0 :(得分:9)
我为New Relic工作。
虽然没有Java Agent API调用来忽略错误,但我已经提交了一个功能请求来创建这样的调用。但是,这在短期内对您没有帮助,因为我们无法承诺何时或是否实施此目的的时间表。
所以,这是我们的代理调用错误的东西的性质 - 也许你可以稍微改变你的代码,以便我们的代理不会注意到错误?实际上,一旦处理异常并且不调用noticeError()方法,异常就不会被归类为New Relic中的错误或记录为错误。您是否有机会添加异常处理程序来呈现40x页面而不是让这些异常无法处理?
您还可以选择忽略整个事务的事务(),这将导致它不被归类为错误。它不是最理想的,因为您最好观察所有生产流量,以了解错误处理程序本身何时变慢或最终创建自己的(意外)错误,但这也应该有效。
最后,您可以忽略代理配置中的HTTP状态代码和特定异常名称 - newrelic.yml(如果使用客户端配置)或在应用程序设置页面(https://rpm.newrelic.com/accounts/X/applications/Y/edit)页面上使用服务器side config。
请注意,通过代理配置忽略状态代码或异常名称只会阻止单独记录错误,但仍会添加错误计数/错误率,您可能会在其上发出警报;处理异常或调用ignoreTransaction()也会从错误率中清除它。
如果这些方法都不适合您,我们很乐意与您进一步交谈,但您应该在https://support.newrelic.com打开支持票,因为这不是讨论的正确论坛。
答案 1 :(得分:6)
我也为New Relic工作,因为傻瓜是我的死敌,所以我不同意! 不是真的,但我要注意,我认为newrelic.yml配置文件中的ignore_errors设置是最佳选择:您可以指定要忽略的类名。否则你可以使用ignore_status_codes,我认为你的'未授权'错误可能有一致的错误代码。
这也会导致错误率下降(在代理程序的早期版本中,ignore_errors只会阻止跟踪而不会更改错误率,这在版本3.0之后会得到修复)。
答案 2 :(得分:-1)
我不是为New Relic工作,而是说明最后的选择。您的应用程序是否可以不返回错误,而是返回200,但在回复中提供错误的详细信息。
不理想,但它是一种选择。