커스텀 메트릭으로 더 깊은 인사이트 얻기
AppSignal 젬(gem)에서는 이미 커스텀 인스트루멘테이션(계측) 기능을 통해 애플리케이션 성능에 대한 상세 정보를 확인할 수 있습니다. 하지만 때로는 그 외의 다른 지표도 함께 추적하고 싶어질 때가 있습니다.
1.0 버전 릴리스부터는 커스텀 메트릭을 AppSignal로 직접 전송할 수 있습니다. 이를 통해 신규 계정 수부터 데이터베이스 디스크 사용량까지, 애플리케이션 내 어떤 값이든 추적할 수 있습니다. 커스텀 메트릭은 기존 코드 인스트루멘테이션을 대체하는 것이 아니라, 코드 속 특정 데이터를 더 쉽게 확인하고 시간의 흐름에 따라 측정할 수 있게 해주는 추가적인 도구입니다.
세 가지 유형의 메트릭
| 게이지(Gauge) | 덮어쓸 수 있는 숫자 값으로, 사용자 수처럼 현재 상태를 저장하는 데 유용합니다. |
|---|---|
| 카운터(Counter) | 주어진 값만큼 증가시킬 수 있는 숫자로, 프로세스가 실행된 횟수를 세는 데 적합합니다. |
| 분포(Distribution) | 평균값과 개수가 함께 저장되는 숫자들의 모음으로, 평균 판매 금액 추적 등에 유용합니다. |
AppSignal 젬에는 각 메트릭 유형에 대응하는 메서드가 마련되어 있으며, 이 메서드들을 사용해 데이터를 전송할 수 있습니다.
게이지(Gauge)
게이지는 증가와 감소가 모두 가능한 지표에 가장 적합합니다. 실제로 AppSignal에서는 활성 계정 수를 그래프로 표현할 때 게이지를 사용합니다.
count = Account.active.count
Appsignal.set_gauge('account_count', count)카운터(Counter)
이름 그대로, 카운터는 어떤 일이 발생한 횟수를 추적하는 데 탁월한 방법입니다. 예를 들어 저희 워커는 여러 데이터 포인트를 담고 있는 페이로드를 처리하는데, 작업(job) 하나의 카운트만으로는 실제 처리한 데이터량을 정확히 파악할 수 없습니다. 이럴 때 카운터를 사용해 처리하는 각 데이터 포인트마다 값을 증가시키면 됩니다.
minute.metrics.each do |metric|
Appsignal.increment_counter('metric_count', metric.length)
end분포(Distribution)
분포는 특정 코드가 실행되는 데 걸리는 평균 시간을 측정하는 데 사용됩니다. 예를 들어 하나의 작업이 여러 개의 맵/리듀스(map/reduce) 작업을 실행하는 경우, 인스트루멘테이션으로 실행 시간을 추적하더라도 각 작업의 평균 소요 시간을 보기 좋은 그래프로 확인하고 싶다면 분포가 유용합니다.
Appsignal.add_distribution_value('mapreduce_duration', MapReduce::Minutely.new.run.time)메트릭을 그래프로 만들기
메트릭을 AppSignal로 전송하는 것은 절반일 뿐입니다. 데이터를 전송한 후에는 이를 시각적으로 보여줄 그래프를 만들어야 합니다. 이 작업은 "커스텀 메트릭(custom metrics)" 페이지의 에디터에서 진행합니다.
커스텀 메트릭 기능을 사용하면 그래프로 구성된 여러 화면을 만들 수 있으며, 화면과 각 화면의 그래프는 YAML 형식으로 정의합니다.
예를 들어 계정 관련 그래프가 있는 화면을 만들고, 계정 수를 나타내는 그래프를 표시하려면 다음과 같은 YAML을 사용할 수 있습니다:
- title: Account overview
graphs:
- title: "Number of accounts"
kind: gauge
format: number
fields:
- account_count위 설정은 다음과 같은 페이지를 생성합니다:
필드 목록 대신 하나 이상의 메트릭 이름과 일치하는 정규식(regex)을 사용할 수도 있습니다. 아래 예제는 서드파티 API의 응답 코드별로 라인이 그려지는 그래프를 렌더링합니다.
- title: API Responses
graphs:
- title: "API response codes"
kind: count
filter: "api_response_code_[0-9]+"
format: number지금까지 소개한 내용은 AppSignal로 추적할 수 있는 수많은 유용한 메트릭 중 일부에 불과합니다. 커스텀 메트릭에 대한 자세한 내용은 공식 문서를 참고하시거나, 계정 설정에 도움이 필요하시면 언제든지 문의해 주세요.