APM의 Java 에이전트는 애플리케이션 내에서 발생하는 오류에 대한 자세한 정보를 보고합니다. 이를 통해 애플리케이션의 성능이나 최종 사용자의 경험에 영향을 미칠 수 있는 문제 영역에 대한 통찰력을 얻을 수 있습니다.
Java 에이전트 버전 3.40.0 이상 에는 다음을 포함하여 오류가 보고되는 방식을 제어할 수 있는 몇 가지 구성 옵션이 있습니다.
오류율 또는 Apdex에 영향을 미치지 않도록 예상 오류 구성
오류 무시
자동으로 보고되지 않는 오류 보고
오류 데이터 보기에 대한 자세한 내용은 오류 분석 을 참조하십시오. 모든 에이전트의 오류 데이터에 대한 개요는 APM의 오류 관리 를 참조하십시오.
일반적으로 보고되는 오류 예
Java 에이전트는 다음 시나리오에서 오류를 보고합니다.
오류 보고
코멘트
처리되지 않은 오류(스택 추적 포함)
Java 에이전트가 추적한 트랜잭션 내에서 처리되지 않은 오류가 발생하면 전체 스택 추적과 함께 오류가 보고됩니다.
HTTP 상태 코드(스택 추적 없음)
트랜잭션으로 인해 HTTP 상태 코드가 생성되면 스택 추적 없이 오류가 보고됩니다. 이 때문입니다:
애플리케이션 서버가 오류 조건을 감지하고 상태 코드를 명시적으로 설정했습니다.
또는
오류 조건은 프로그램 논리에 의해 감지되었으므로 예외 개체 또는 스택이 없습니다.
이러한 유형의 트랜잭션에 스택 추적을 포함하려면 noticeError(...) API 호출을 사용해야 합니다.
noticeError(...) API 호출
Java 에이전트가 noticeError(...) API 호출을 사용하여 명시적으로 호출하는 경우 트랜잭션 내에서 발생하는지 여부에 관계없이 오류가 보고됩니다. 보고된 정보는 Javadocs 에 설명된 대로 noticeError(...) API 호출에 사용된 매개변수에 따라 다릅니다.
100% 이상 보고되는 범위 없는 오류
Java 에이전트는 트랜잭션에 연결되지 않은 오류인 범위가 지정되지 않은 오류를 보고할 수 있습니다. 이 때문에 타임슬라이스에 하나의 트랜잭션이 있고 동일한 타임슬라이스에 여러 오류가 있을 수 있습니다. 이 상황에서 New Relic은 100% 이상의 오류율을 보여줍니다.
오류 보고 구성
중요
이 기능을 사용하려면 최신 릴리스 (Java 에이전트 3.40.0 이상)로 업그레이드 하십시오.
Java 에이전트는 오류가 보고되는 방식을 제어하는 몇 가지 유연한 구성 옵션을 제공합니다.
이러한 noticeError 버전에서 보고된 오류는 newrelic.yml 에서 예상 오류 로 구성할 수 있습니다. 이 API에 대한 호출은 오류가 newrelic.yml 에서 무시 된 것으로 구성된 경우 무시됩니다. 자세한 내용은 오류 구성 우선 순위 를 참조하십시오.
이 noticeError() API 호출을 사용하여 자동으로 보고되지 않는 오류를 보고하고 newrelic.yml 에서 예상 오류 로 구성합니다.
애플리케이션 비즈니스 로직의 일부로 예상되는 오류가 오류율이나 Apdex 점수에 영향을 미치지 않도록 방지할 수 있지만 여전히 APM에 보고됩니다. 이렇게 하면 이러한 오류로 인해 발생하는 경고(오류율 및 Apdex 점수 기반)를 방지하면서 문제 해결을 위해 UI에 오류 정보를 유지할 수 있습니다.
noticeError API 호출의 expected 매개변수는 YAML의 expected_classes 를 재정의합니다. 따라서 오류는 정상으로 보고됩니다( expected 로 표시되지 않음).
YAML 구성:
error_collector:
ignore_classes:
- "com.example.ErrorClass"
그리고
추가 YAML 구성:
error_collector:
expected_classes:
- "com.example.ErrorClass"
결과:
YAML ignore_classes/ignore_messages 은 YAML expected_classes/expected_messages 을 재정의하므로 오류가 무시됩니다. 이 동일한 원칙이 ignore_status_codes 및 expected_status_codes 에 적용됩니다.
오류 세부정보에 대한 로그 검사
로그와 애플리케이션의 데이터를 함께 가져와 문제 해결을 더 쉽고 빠르게 할 수 있습니다. 컨텍스트의 로그를 사용하면 앱의 UI에서 직접 오류 및 추적과 관련된 로그 메시지를 볼 수 있습니다.