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

AppSignal 커스텀 메트릭 활용법: 게이지, 카운터, 분포로 원하는 지표 추적하기

커스텀 메트릭으로 더 깊은 인사이트 얻기

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로 추적할 수 있는 수많은 유용한 메트릭 중 일부에 불과합니다. 커스텀 메트릭에 대한 자세한 내용은 공식 문서를 참고하시거나, 계정 설정에 도움이 필요하시면 언제든지 문의해 주세요.