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)로 상호 연관되어, 메트릭, 로그, 트레이스를 위한 통합 시스템을 제공합니다.