Honeybadger Insights: 이벤트 중심의 관측 가능성 플랫폼과 와이드 이벤트의 힘

Observable systems with wide events - Honeybadger Developer Blog

작성자
Ruby Weekly
발행일
2024년 04월 16일

핵심 요약

  • 1 Honeybadger Insights는 기존 로그, 메트릭, 트레이스의 분리된 접근 방식을 이벤트 중심 전략으로 통합하여 시스템 관측 가능성을 향상시킵니다.
  • 2 비정형 로그를 JSON 형식의 구조화된 이벤트로 전환함으로써 BadgerQL을 통한 강력한 쿼리와 심층적인 데이터 분석이 가능해집니다.
  • 3 ‘와이드 이벤트’는 실행에 대한 포괄적인 컨텍스트 데이터를 단일 이벤트에 담아, 미지의 문제 해결에 필수적인 풍부한 진단 정보를 제공합니다.

도입

Honeybadger 개발자인 Kevin은 새로운 로깅 및 관측 가능성 플랫폼인 Honeybadger Insights의 설계 철학을 소개합니다. 현대 소프트웨어 개발에서 시스템 관측 가능성은 전통적으로 로그, 메트릭, 트레이스의 세 가지 요소에 의존해왔으나, 이들은 종종 분리되어 각기 다른 UI를 통해 시스템을 조망했습니다. Honeybadger Insights는 이러한 분리된 접근 방식에 도전하며, ‘이벤트’ 중심의 전략을 통해 시스템 동작에 대한 통합적인 이해를 제공하고자 합니다.

Honeybadger Insights는 ‘구조화된 이벤트’ 개념을 중심으로 관측 가능성을 재정의합니다.

구조화된 이벤트의 중요성

  • 기존의 문자열 기반 로그는 로컬 서버에서 확인하기 쉽지만, 유용한 데이터 포인트를 추출하기 어렵습니다.
  • JSON 형식의 구조화된 이벤트는 event_type, ts, user, source_ip, location, successful, attempts와 같은 명확한 필드를 통해 데이터를 표현합니다.
  • 이는 단순히 정보를 나열하는 것을 넘어, 필드 간의 상관관계를 분석하고 심층적인 통찰력을 얻을 수 있는 기반을 마련합니다.

BadgerQL을 통한 강력한 쿼리

  • 구조화된 이벤트는 Honeybadger Insights의 강력한 쿼리 언어인 BadgerQL을 통해 질의할 수 있습니다.
  • 이는 grep과 같은 텍스트 기반 검색 도구로는 불가능한 복잡한 분석을 가능하게 합니다.
  • 예시 쿼리:
    • 로그인 시도 횟수가 가장 많은 사용자 찾기: fields user.name::str | sort attempts::int desc
    • 도시별 로그인 시도 횟수: stats count() as ct by location.city::str
    • 여러 번 시도해야 로그인하는 사용자 찾기: filter successful::bool | stats avg(attempts::int) as avgAttempts by user.name::str | filter avgAttempts > 2
    • 여러 IP 주소에서 연결하는 사용자 찾기: stats unique(source_ip::str) as ipCount by user.name::str | filter ipCount >= 2

와이드 이벤트의 힘

  • ‘와이드 이벤트’는 단일 실행에 대한 포괄적인 컨텍스트 데이터를 담고 있는 이벤트입니다.
  • 수천 개의 작은 로그를 전송하는 대신, 중요한 컨텍스트 데이터를 하나의 이벤트로 수집하여 ‘미지의 미지(unknown unknowns)’ 상황에서 발생할 수 있는 문제 해결에 필수적인 세부 정보를 제공합니다.
  • Honeybadger의 에러 알림(error notice)은 와이드 이벤트의 좋은 예시로, 실행 중 축적된 모든 컨텍스트 데이터를 포함하여 전송됩니다.
  • 이러한 에러 알림도 Insights에 자동으로 추가되어 BadgerQL로 쿼리하고 시각화할 수 있습니다.

메트릭과 트레이스도 이벤트

  • 메트릭과 트레이스 또한 구조화된 이벤트로 간주되며, 로그 이벤트와 함께 동일한 도구로 쿼리하고 시각화할 수 있습니다.
  • Honeybadger는 Ruby, PHP, Elixir, Python 등 인기 프레임워크 및 라이브러리에서 원격 측정 및 성능 메트릭을 자동으로 계측합니다.
  • 사용자 정의 메트릭(Honeybadger.gauge, Honeybadger.increment_counter)도 구조화된 이벤트로 처리되어 쿼리 및 시각화가 가능합니다.
  • 관련 이벤트는 요청 ID(request ID)로 상호 연관되어, 메트릭, 로그, 트레이스를 위한 통합 시스템을 제공합니다.

결론

로그를 구조화된 이벤트로 전환하는 것은 시스템에 대한 심층적인 관측 가능성을 확보하는 데 중요한 첫걸음입니다. Honeybadger Insights는 이 과정에서 발생하는 정보의 복잡성을 줄이고, 노이즈를 제거하며, 숨겨진 통찰력을 추출할 수 있는 강력한 도구를 제공합니다. 와이드 이벤트를 통해 시스템의 전체 컨텍스트를 파악하고, 실시간으로 어떤 질문이든 던질 수 있는 유연성을 확보함으로써, 개발자는 문제 해결 및 시스템 최적화에 필요한 핵심 정보를 효과적으로 얻을 수 있습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!