O agente Java do APM relata informações detalhadas sobre erros que ocorrem em seu aplicativo. Isso fornece insights sobre áreas problemáticas que podem estar afetando o desempenho do seu aplicativo ou a experiência do usuário final.
Com o agente Java versões 3.40.0 ou superior, há diversas opções de configuração que permitem controlar como os erros são relatados, incluindo:
Configurando erros esperados para que não afetem a taxa de erros ou o Apdex
Erro ignorado
Relatando erros que não são relatados automaticamente
Para obter mais informações sobre como visualizar seus dados de erro, consulte Análise de erros. Para obter uma visão geral dos dados de erro em todos os agentes, consulte Gerenciar erros no APM.
Exemplos de erros comuns relatados
O agente Java relata erros nos seguintes cenários:
Relatório de erros
Comments
Erros não tratados (inclui stack trace)
Se ocorrer um erro não tratado em uma transação que o agente Java estava rastreando, o erro será relatado com o stack trace completo.
Códigos de status HTTP (sem stack trace)
Quando uma transação no seu aplicativo gera um código de status HTTP, por exemplo, 400 para um erro do cliente, ele relata o erro sem stack trace. As razões para isso são:
O servidor do aplicativo detectou uma condição de erro e definiu explicitamente o código de status.
OU
A lógica do programa detectou a condição de erro, portanto não houve objeto ou stack de exceção.
Para incluir o stack trace nesses tipos de transação, você deve usar uma chamada de API noticeError(...).
noticeError(...) Chamada de API
Se o agente Java fizer uma chamada explícita usando a chamada de API noticeError(...) , o erro será relatado independentemente de ocorrer ou não em uma transação. As informações relatadas dependem do parâmetro usado na chamada da API noticeError(...) , conforme descrito nos Javadocs.
Erros sem escopo relatando mais de 100%
O agente Java pode relatar erros sem escopo, que são erros que não estão vinculados a nenhuma transação. Por causa disso, é possível ter uma transação em um intervalo de tempo e vários erros no mesmo intervalo de tempo. Nesta situação, o New Relic mostraria então uma taxa de erros over 100%.
Os erros relatados por essas versões do noticeError podem ser configurados como erro esperado no newrelic.yml. As chamadas para esta API serão substituídas se o erro for configurado como ignorado em newrelic.yml. Para obter detalhes, consulte Precedência de configuração de erros.
Use estas noticeError() chamadas de API para reportar erros que não são reportados automaticamente e configure-os como erro esperado em newrelic.yml:
Os erros relatados por essas versões de noticeError substituirão a configuração de erro esperadonewrelic.yml . As chamadas para esta API serão substituídas se o erro for configurado como ignorado no yml. Para obter detalhes, consulte Precedência de configuração de erros.
Use estas noticeError(...) chamadas de API para relatar erros que não são relatados automaticamente e configurá-los como erros esperados com a API (substitui a configuração de erro esperado do yml):
Ignore ou espere erros por meio do arquivo de configuração
Nas versões 3.40.0 ou superiores, você pode controlar como os erros são relatados usando a configuração baseada em YAML. Isso permite que você erro ignorado ou espere erros com base em códigos de status HTTP or com base em uma lista de nomes de classes de exceção, além de uma mensagem de erro opcional.
Ignoring errors impede que as classes ou códigos de exceção especificados sejam relatados a .
Expecting errors Evita que as classes ou códigos de exceção especificados afetem a taxa de erros e a pontuação Apdex do seu aplicativo. Isso permite reter as informações de erro para fins de resolução de problemas, evitando alertas baseados em taxa de erros ou pontuação Apdex.
Essas configurações são dinâmicas, portanto, a execução do agente notará alterações em newrelic.yml sem reiniciar a JVM. Para obter mais informações e exemplos, consulte o arquivo de configuração do agente Java.
Configuração baseada em YAML para coleta de erros
A configuração baseada em YAML para coleta de erros permite ignorar totalmente erros específicos ou isentar erros esperados de afetar a taxa de erros e a pontuação Apdex do seu aplicativo. Você pode marcar erros como ignorados ou esperados com base nos seguintes critérios:
Um determinado intervalo de códigos de status HTTP, apresentados como uma lista separada por vírgulas ou intervalo tracejado
Uma lista separada por vírgula usando o nome totalmente qualificado de um pacote/classe
and
uma string de mensagem de erro fornecida opcionalmente
Por padrão, o agente Java inclui uma seção error_collector na qual todas as opções de configuração de erro baseadas em YAML são encontradas. A coleta de erros pode ser ativada ou desativada da seguinte forma:
error_collector:
enabled:true
Erros que não são de interesse particular podem ser totalmente ignorados. Ao identificar erros a serem ignorados:
Eles não serão comunicados à APM.
Eles não afetarão a taxa de erros ou a pontuação Apdex da sua aplicação
Erros que são expected como parte da lógica de negócios de um aplicativo podem ser evitados de afetar a taxa de erros ou a pontuação do Apdex e ainda assim serem relatados ao APM. Isso permite que você retenha as informações de erro na UI para fins de resolução de problemas, evitando alertas (com base na taxa de erro e na pontuação do Apdex) causados por esses erros.
expected parâmetro na chamada de API noticeError(..)
expected_* configuração no YAML
Aqui estão alguns exemplos dos resultados ao combinar várias chamadas de API e configuração YAML.
Configuração YAML:
error_collector:
ignore_classes:
-"com.example.ErrorClass"
e
Chamada de API:
noticeError(com.example.ErrorClass)
Resultado:
O YAML ignore_classes substitui a chamada de API noticeError e o erro é ignorado.
Configuração YAML:
error_collector:
expected_classes:
-"com.example.ErrorClass"
E
Chamada de API:
noticeError(com.newrelic.Exception)
Resultado:
O parâmetro expected na chamada de API noticeError é verdadeiro por padrão e a configuração YAML expected_classes contém uma classe de erro. Portanto, o erro é relatado e marcado como expected.
O parâmetro expected na chamada de API noticeError substitui expected_classes no YAML. Portanto, o erro é relatado como normal (não marcado como expected).
Configuração YAML:
error_collector:
ignore_classes:
-"com.example.ErrorClass"
E
Configuração adicional de YAML:
error_collector:
expected_classes:
-"com.example.ErrorClass"
Resultado:
O YAML ignore_classes/ignore_messages substitui o YAML expected_classes/expected_messages, portanto o erro é ignorado. Este mesmo princípio se aplica a ignore_status_codes e expected_status_codes.
Examine o log para obter detalhes do erro
Você pode reunir os dados do seu log e da aplicação para tornar a resolução de problemas mais fácil e rápida. Com os logs contextualizados, você pode ver a mensagem do log relacionada aos seus erros e rastrear diretamente na interface do seu aplicativo.