Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

커스텀 메트릭을 설정하면 로그 라인을 일일이 뒤지거나 복잡한 리포팅 도구와 씨름할 필요 없이, 필요한 정보를 즉시 파악할 수 있습니다. 의미 있는 메트릭을 추적해 애플리케이션의 핵심 모니터링 데이터를 보완하고, 잠재적인 문제를 신속하게 식별하고 해결하세요.

이번 포스트에서는 커스텀 메트릭을 설정하고 활용해 모니터링 사각지대를 없애는 방법을 소개합니다. AppSignal의 다양한 모니터링 도구와 함께 커스텀 메트릭을 사용하면 애플리케이션 성능을 한층 더 깊이 이해할 수 있습니다.

커스텀 메트릭이란?

메트릭과 관련해 AppSignal은 기본적으로 오류율, 응답 시간, 처리량(throughput) 같은 핵심 데이터를 추적합니다. 이러한 메트릭을 활용해 애플리케이션을 모니터링하고, 성능 문제가 발생하면 알림을 보내 드립니다.

커스텀 메트릭을 사용하면 원하는 애플리케이션 데이터를 자유롭게 시각화하고 추적할 수 있습니다. 활성 사용자 수나 특정 작업의 처리 시간처럼 추가적인 맥락을 결합해 애플리케이션 성능에 대한 더 깊은 통찰을 얻을 수 있죠. AppSignal에서 대시보드를 만들어 처리량이나 데이터베이스 크기 같은 핵심 메트릭과 함께 커스텀 메트릭을 추적할 수도 있습니다.

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

메트릭 측정 방법

AppSignal로 메트릭을 전송할 때는 어떤 방식으로 측정할지 먼저 고려하는 것이 중요합니다. AppSignal은 세 가지 측정 방식을 제공합니다.

AppSignal은 적절한 측정 형태로 커스텀 메트릭을 손쉽게 추적할 수 있도록 다양한 메서드와 함수를 제공합니다.

웹샵(온라인 쇼핑몰)을 모니터링한다고 가정해 보겠습니다. 게이지(gauge), 카운터(counter), 분포(distribution) 측정을 활용해 특정 데이터 포인트를 추적하는 방법을 하나씩 살펴보겠습니다.

게이지(Gauge)

애플리케이션 성능이 평소보다 좋거나 나쁜 이유를 파악하려면, 현재 애플리케이션을 사용 중인 활성 쇼핑객 수를 확인하는 것이 유용합니다. 새 사용자 세션이 생성될 때마다 게이지 측정으로 활성 사용자 수를 보고할 수 있습니다.

이를 위해 미닛리 프로브(minutely probe)를 만들 수 있습니다. 미닛리 프로브는 주기적으로 커스텀 메트릭을 AppSignal에 전송하는 메커니즘입니다. 이 프로브를 활용해 지난 1분 동안 업데이트된 장바구니 수를 기록하고, set_gauge 메서드를 사용해 active_shoppers라는 라벨로 AppSignal에 전송할 수 있습니다.

Ruby

미닛리 프로브에 대한 자세한 내용은 Ruby 문서를 참고하세요.

Elixir

미닛리 프로브에 대한 자세한 내용은 Elixir 문서를 참고하세요.

Node.js

미닛리 프로브에 대한 자세한 내용은 Node.js 문서를 참고하세요.

설정이 완료되면 AppSignal에서 차트를 만들어 현재 애플리케이션을 사용 중인 활성 쇼핑객 수를 추적할 수 있습니다.

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

이 정보를 바탕으로 사이트를 실제로 사용 중인 대략적인 사용자 수를 기준으로 웹샵의 성능을 빠르게 판단할 수 있습니다. 활성 사용자 수가 비정상적으로 높아 성능 문제가 예상된다면, 애플리케이션이 계속 정상적으로 서비스될 수 있도록 미리 조치를 취할 수 있습니다.

카운터(Counter)

카운터를 사용하면 애플리케이션에서 어떤 일이 얼마나 자주 발생하는지 추적할 수 있습니다. 특정 이벤트나 행동의 발생 빈도를 시간에 따라 모니터링해야 하는 상황에서 특히 유용합니다. 예를 들어 사용자가 장바구니에 상품을 담는 행동을 몇 번 완료했는지 확인할 수 있죠.

이번에는 애플리케이션이 사용자에게 인보이스(청구서)를 발행하는 빈도를 파악한다고 해보겠습니다. 이를 위해서는 인보이스가 생성될 때마다 카운터를 증가시키면 됩니다.

Ruby와 Elixir에서는 increment_counter 메서드를 사용합니다:

Node.js에서는 incrementCounter 함수를 사용합니다:

설정 후에는 AppSignal에서 애플리케이션이 생성하는 인보이스 수를 추적할 수 있습니다.

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

만약 주문 접수 수처럼 관련된 추가 데이터 포인트를 함께 추적했는데, 두 메트릭이 예상대로 맞물려 움직이지 않는다면 어떻게 될까요? 그렇다면 인보이싱과 주문 로직을 조사해, 많은 고객에게 영향을 미치기 전에 핵심 문제를 찾아 해결할 수 있습니다.

분포(Distribution)

커스텀 메트릭으로 응답 시간이나 백그라운드 작업 소요 시간 같은 데이터 측정값을 기록할 수 있습니다. 이런 메트릭을 꾸준히 추적하면 사용자 경험에 부정적인 영향을 줄 수 있는 느린 백그라운드 작업이나 API 엔드포인트를 찾아내는 데 큰 도움이 됩니다.

여기서는 주문 확인 작업이 완료되는 데 걸리는 평균 시간을 알고 싶습니다. 고객이 구매 직후 몇 분 안에 확인 이메일을 받는 것이 매우 중요하기 때문입니다.

이를 위해 add_distribution_value 메서드를 사용합니다:

Ruby

Elixir

Node.js

설정이 끝나면 AppSignal에서 주문 확인 작업의 평균 완료 시간을 추적할 수 있습니다. 사용자가 불편을 느끼기 전에 성능 저하를 먼저 감지해, 애플리케이션을 선제적으로 안정적이고 확장 가능한 상태로 유지할 수 있습니다.

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

커스텀 메트릭을 위한 커스텀 대시보드

직관적인 UI 덕분에 몇 분 만에 커스텀 메트릭 추적을 시작할 수 있습니다.

대시보드 내비게이션의 "Add dashboard" 버튼으로 새 대시보드를 만들고, "Add graph" 버튼을 클릭해 그래프 빌더(Graph Builder)로 그래프를 만들기 시작하세요.

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

그래프를 만들 때는 어떤 메트릭과 태그를 차트에 표시할지 선택하고, 범례와 라벨을 자유롭게 설정할 수 있습니다. 완료하면 지정한 기간의 현재 메트릭 데이터가 곧바로 그래프에 표시됩니다.

메트릭이 중요한 이유

로그는 애플리케이션 성능 문제가 발생한 디버깅하고 문제를 해결하는 데 훌륭한 도구입니다. 반면 메트릭은 고객이 문제를 인지하기 전에 미래의 문제를 예방하는 데 도움을 줍니다. 커스텀 메트릭을 활용하면 다음과 같은 장점이 있습니다:

  • 중요한 것에 집중: 애플리케이션의 특정 데이터 포인트를 정확하게 추적하고, 방대한 로그 메타데이터나 장애 목록을 일일이 필터링할 필요 없이 집중된 인사이트를 얻을 수 있습니다.
  • 비즈니스 관점에서 접근: 비즈니스 관점에서 애플리케이션 성능을 이해하고, 활성 사용자 수, KPI, 일일 매출 같은 핵심 데이터를 빠르게 추적할 수 있습니다.
  • 로그 간소화: '모든 것을 한꺼번에' 로깅하는 방식은 지속 가능하지 않습니다. 커스텀 메트릭으로 필수 데이터를 효율적으로 추적하고, 로그는 장애 원인 조사에만 활용해 문제 해결과 디버깅에 꼭 필요한 데이터만 기록하세요.
  • 선제적 대응: 예를 들어 인보이스 전송이 너무 오래 걸리거나 활성 사용자 수가 평소보다 많을 때 알려주는 커스텀 트리거를 설정할 수 있습니다. 이런 경고를 통해 고객에게 영향을 주기 전에 문제를 미리 조사하고 해결할 수 있습니다.

커스텀 메트릭 더 깊이 알아보기

애플리케이션 메트릭을 최대한 활용할 준비가 되셨나요? 이번 포스트에서는 AppSignal의 커스텀 메트릭으로 할 수 있는 일 중 극히 일부만 다뤘습니다. 커스텀 메트릭 공식 문서에서 필요한 모든 내용을 확인하실 수 있습니다.

도움이 필요하거나 메트릭, AppSignal 또는 모니터링에 대해 궁금한 점이 있다면 언제든지 문의해 주세요.

AppSignal의 커스텀 메트릭은 애플리케이션 모니터링을 돕는 개발자 친화적인 여러 기능 중 하나일 뿐입니다. 개발자들이 AppSignal 모니터링을 즐겨 사용하는 이유는 다음과 같습니다:

  • 탐색하기 쉬운 직관적인 인터페이스
  • 간단하고 예측 가능한 요금제
  • 개발자가 지원하는 개발자 전용 지원

AppSignal을 처음 사용하신다면 무료 스트루프와플(stroopwafel)을 요청하는 것도 잊지 마세요! 애플리케이션의 모든 메트릭을 손끝에서 확인할 수 있는 기쁨만큼은 아니어도, 꽤 맛있습니다 😉🍪

AppSignal 커스텀 메트릭 추적로 즉각적이고 실행 가능한 인사이트 확보하기

Connor James

AppSignal의 개발자 마케팅 매니저. 팟캐스트 애호가이며, cannoli를 너무 사랑해서 이름을 'Connoli'로 바꿀까 고민할 정도입니다. color에 'u'가 들어간다고 믿는 인물이기도 합니다. 마이크 앞이나 무대 위에서, 혹은 쉴 때는 소파에 누워 있는 모습을 어디선가 발견할 수 있을 겁니다.

Connor James의 모든 글 보기