뉴렐릭에서 오류가 표시되는 방식 

클라이언트가 뉴렐릭으로 전송하는 오류는 서비스 요약 페이지에 있는 오류율 차트에 누적되며, 서비스의 상태를 모니터링하는 데 도움이 되는 다른 여러 정보와 함께 표시됩니다. 

뉴렐릭은 `error.type` 속성을 가진 메트릭에서 파생된 오류 데이터를 사용해 이 그래프를 생성합니다. `http.server.request.duration`이나 `rpc.server.call.duration` 처럼 OpenTelemetry에서 발생하는 오류는 이 속성을 가집니니다. 

스팬 데이터를 통해 뉴렐릭으로 전송된 오류는 `ERROR` 상태 코드로 표시됩니다. 이러한 오류 스팬은 사용자가 오류를 감지, 분류 및 수정하는 데 도움을 주는 에러스 인박스(errors inbox) 환경을 구동합니다. 

뉴렐릭 언어 에이전트 오류 필터링 기능

뉴렐릭은 여러 서버 측 설정을 제공하며, 여기에는 뉴렐릭 사용자 언어 에이전트 설정 파일에 지정된 설정과 다르게 오류 수집과 관련된 설정이 포함됩니다. 따라서 HTTP 상태 코드 또는 오류 클래스별로 특정 오류를 무시하도록 뉴렐릭 언어 에이전트를 설정할 수 있습니다. 그러면, 오류가 뉴렐릭으로 계속 전송되긴 하지만 오류율에 영향을 미치거나 에러스 인박스에 표시되지 않습니다. 

오류를 무시할 필요가 있는 경우

대부분의 애플리케이션에서 500 내부 서비스 오류 같은 HTTP 응답이나 예외는 실제 백엔드 시스템 장애라기보다는 예상된 동작이라고 할 수 있습니다. 이렇게 일상적이고 조치를 취할 필요가 없는 이벤트가 심각한 오류로 계속 기록되면, 오류율이 인위적으로 부풀려지고 서비스 수준 지표(SLI)를 왜곡하며 대기 중인 엔지니어에게 잘못된 알림을 전송할 수 있습니다.

팀이 가시성을 유지하고 알림 피로를 예방하는 데 도움이 되므로 이러한 특정 오류는 무시할 필요가 있습니다. 하지만 귀중한 디버깅 데이터를 모두 폐기할 필요는 없습니다. 스팬 상태 코드와 메트릭 속성을 선택적으로 업데이트하면 이벤트가 황금 신호에 부정적인 영향을 미치는 것을 방지하는 동시에 필요할 때 디버깅을 위한 기본 트레이스 데이터를 보존할 수 있습니다.

오픈텔레메트리 수집기가 오류를 무시하도록 설정하는 방법

오픈텔레메트리 변환 프로세서를 설정해 오류 데이터를 뉴렐릭으로 내보내기 전에 수정하는 방법도 있습니다. 변환 프로세서는 스팬 상태 코드뿐만 아니라 더 다양한 유형의 변환을 지원하며, 조건을 충족하는 각 텔레메트리 데이터에 대해 여러 변환을 한 번에 실행할 수 있습니다. 

앞서 언급했듯이 스팬 상태 코드를 `ERROR`에서 `UNSET`으로 변경하면 오류가 무시된 것으로 표시되어 에러스 인박스가 복잡해지지 않습니다. 

그런 다음 오류율에서 메트릭 오류 데이터를 제거하려면 `error.type` 속성을 삭제해야 합니다. 

영향

개념을 증명하기 위해 newrelic-opentelemetry-examples 리포지터리에서 `ignored-errors`라는 테스트 앱을 실행하고 HTTP 상태 코드(5개의 200, 3개의 404, 3개의 500, 5개의 503)를 전송해 보았습니다. 

HTTP 상태 코드 500을 무시하는 새로운 설정이 적용되면, 요약 페이지에서 오류율이 50%에서 31.25%로 떨어지는 것을 확인할 수 있습니다.

또한 에러스 인박스 페이지에서 500 오류가 더 이상 발견되지 않습니다.