본문 바로가기
WIKI 기술 지식 베이스

메트릭 유형

원문 보기 위키 갱신

메트릭 유형 (Metrics Types)

Datadog에 제출되는 각 메트릭은 유형(type)을 가져야 해요. 메트릭 유형은 쿼리할 때 메트릭 값이 표시되는 방식과, 추가 수정자(modifiers)와 함수(functions)를 사용한 Datadog 내 그래프 기능에 영향을 줍니다. 메트릭 유형은 Metrics Summary 페이지에서 해당 메트릭의 상세 사이드 패널에 표시됩니다.

COUNT, RATE, GAUGE, SET, HISTOGRAM, DISTRIBUTION 여섯 가지 제출 유형이 있으며, 이들은 Datadog 웹 애플리케이션의 다섯 가지 인앱 유형(COUNT, RATE, GAUGE, DISTRIBUTION, HISTOGRAM)으로 매핑돼요.

출처: 문서

본문

개요 (Overview)

Datadog에 제출되는 각 메트릭은 유형이 있어야 해요. 메트릭 유형은 쿼리할 때 메트릭 값이 표시되는 방식과, 추가 수정자와 함수를 사용한 Datadog 내 그래프 가능성에 영향을 줍니다. 메트릭 유형은 Metrics Summary 페이지에서 해당 메트릭의 상세 사이드 패널에 표시됩니다.

참고: 이 상세 사이드 패널에서 메트릭 유형을 변경하면 기존 모든 시각화와 모니터에서 메트릭 동작이 바뀌어, 과거 데이터가 무의미하게 보일 수 있어요.

다음 메트릭 제출 유형이 허용됩니다.

  • COUNT
  • RATE
  • GAUGE
  • SET
  • HISTOGRAM
  • DISTRIBUTION

이 다양한 메트릭 제출 유형은 Datadog 웹 애플리케이션에서 발견되는 다섯 가지 인앱 메트릭 유형으로 매핑됩니다.

  • COUNT
  • RATE
  • GAUGE
  • DISTRIBUTION
  • HISTOGRAM (Explicit, Exponential)

참고: 유형 없이 메트릭을 Datadog에 제출하면 메트릭 유형이 Datadog에서 Not Assigned로 표시돼요. Not Assigned 메트릭 유형은 초기 메트릭 유형이 제출될 때까지 다른 인앱 유형으로 더 변경할 수 없습니다.

제출 유형 vs 인앱 유형 (Submission vs. in-app type)

메트릭은 네 가지 주요 방식으로 Datadog에 제출돼요.

Datadog이 받는 대부분의 데이터는 에이전트 체크 또는 DogStatsD를 통해 에이전트가 제출해요. 이런 제출 방법에서 메트릭 유형은 플러시 시간 간격 동안 에이전트에 수집된 여러 값이 어떻게 집계되는지 결정합니다. 에이전트는 이 값들을 해당 간격에 대한 단일 대표 메트릭 값으로 결합해요. 이 결합된 값은 Datadog에 단일 타임스탬프로 저장됩니다.

Datadog API에 직접 제출된 데이터는 distribution 메트릭을 제외하고 Datadog이 집계하지 않아요. Datadog로 보내진 원시 값은 그대로 저장됩니다.

Submission types와 Datadog in-app types 섹션을 읽어 서로 다른 메트릭 제출 유형이 대응하는 인앱 유형에 어떻게 매핑되는지 알아보세요.

메트릭 유형 (Metric types)

정의 (Definition)

COUNT

COUNT 메트릭 제출 유형은 한 시간 간격에서 이벤트 발생의 총 횟수를 나타내요. COUNT는 데이터베이스에 만들어진 연결 총 수나 엔드포인트에 대한 요청 총 수를 추적하는 데 사용할 수 있습니다. 이 이벤트 수는 시간에 따라 누적되거나 감소할 수 있어요 — 단조 증가가 아닙니다.

참고: COUNT는 주어진 시간 간격을 기준으로 초당 정규화된 이벤트 발생 수를 나타내는 RATE 메트릭 유형과 달라요.

RATE

RATE 메트릭 제출 유형은 한 시간 간격에서 초당 이벤트 발생의 총 횟수를 나타내요. RATE는 무언가가 얼마나 자주 발생하는지 추적하는 데 사용할 수 있어요 — 데이터베이스에 만들어진 연결의 빈도나 엔드포인트에 대한 요청의 흐름처럼요.

참고: RATE는 주어진 시간 간격에서 이벤트 발생의 총 횟수를 나타내는 COUNT 메트릭 제출 유형과 달라요.

GAUGE

GAUGE 메트릭 제출 유형은 한 시간 간격에서 이벤트의 스냅샷을 나타내요. 이 대표 스냅샷 값은 한 시간 간격 동안 에이전트에 제출된 마지막 값입니다. GAUGE는 지속적으로 보고되는 무언가 — 사용 가능한 디스크 공간이나 사용된 메모리처럼 — 를 측정하는 데 사용할 수 있어요.

HISTOGRAM

HISTOGRAM 메트릭 제출 유형은 한 시간 간격에서 에이전트 측으로 계산된 값 집합의 통계 분포를 나타내요. Datadog의 HISTOGRAM 메트릭 유형은 StatsD timing 메트릭 유형의 확장입니다. 에이전트는 정의된 시간 간격에 보내진 값들을 집계해 그 값 집합을 나타내는 여러 메트릭을 생성합니다.

주어진 시간 간격에 HISTOGRAM 메트릭 <METRIC_NAME>에 대해 X개의 값을 보내면, 기본적으로 에이전트가 다음 메트릭을 생성해요.

  • <METRIC_NAME>.avg — 시간 간격에서 그 X개 값의 평균. Datadog 인앱 유형: GAUGE
  • <METRIC_NAME>.count — 간격 동안 제출된 값의 수, X. 에이전트는 이 숫자를 RATE로 제출하므로 앱에서 X/interval 값을 보여 줘요. Datadog 인앱 유형: RATE
  • <METRIC_NAME>.median — 시간 간격에서 그 X개 값의 중앙값. Datadog 인앱 유형: GAUGE
  • <METRIC_NAME>.95percentile — 시간 간격에서 그 X개 값의 95번째 백분위수. Datadog 인앱 유형: GAUGE
  • <METRIC_NAME>.max — 시간 간격 동안 보내진 그 X개 값의 최댓값. Datadog 인앱 유형: GAUGE

참고:

  • datadog.yaml 구성 파일의 histogram_aggregates 파라미터로 Datadog에 보낼 집계를 구성하세요. 기본적으로 max, median, avg, count 집계만 Datadog로 보내집니다. sum과 min도 사용할 수 있어요.
  • datadog.yaml 구성 파일의 histogram_percentiles 파라미터로 Datadog에 보낼 백분위수 집계를 구성하세요. 기본적으로 95percentile만 Datadog로 보내집니다.

DISTRIBUTION

DISTRIBUTION 메트릭 제출 유형은 한 시간 간격에서 전체 분산 인프라에 걸쳐 계산된 값 집합의 전역 통계 분포를 나타내요. DISTRIBUTION은 서비스 같은 논리적 객체를 기본 호스트와 독립적으로 계측(instrument)하는 데 사용할 수 있습니다.

주어진 시간 간격 동안 에이전트에서 집계하는 HISTOGRAM 메트릭 유형과 달리, DISTRIBUTION 메트릭은 한 시간 간격의 모든 원시 데이터를 Datadog로 보내요. 집계는 서버 측에서 발생합니다. 기본 데이터 구조가 원시적이고 집계되지 않은 데이터를 나타내므로, distribution은 두 가지 주요 기능을 제공해요.

  • 백분위수 집계 계산
  • 태깅 커스터마이제이션

주어진 시간 간격에 DISTRIBUTION 메트릭 <METRIC_NAME>에 대해 X개의 값을 보내면, 기본적으로 다음 집계를 쿼리할 수 있습니다.

  • avg:<METRIC_NAME> — 시간 간격에서 그 X개 값의 평균. Datadog 인앱 유형: GAUGE
  • count:<METRIC_NAME> — 시간 간격에서 제출된 포인트 수, X. 에이전트는 이를 COUNT로 보내요. Datadog 인앱 유형: COUNT
  • max:<METRIC_NAME> — 시간 간격에서 보내진 그 X개 값의 최댓값. Datadog 인앱 유형: GAUGE
  • min:<METRIC_NAME> — 시간 간격에서 보내진 그 X개의 최솟값. Datadog 인앱 유형: GAUGE
  • sum:<METRIC_NAME> — 시간 간격에서 보내진 모든 X개 값의 합. Datadog 인앱 유형: COUNT

참고: distribution 메트릭 값의 다양한 집계는 앱에서 gauge나 count로 표현되지만, 메트릭 자체는 DISTRIBUTION 유형을 유지해요.

예시 (Example)

COUNT

Datadog 에이전트를 실행하는 단일 호스트에서 COUNT 메트릭 notifications.sent를 제출한다고 해 볼게요. 이 호스트는 플러시 시간 간격에서 [1,1,1,2,2,2,3,3] 값을 방출합니다.

에이전트는 한 시간 간격에서 받은 모든 값을 더해요. 그다음 이 경우 총 수 15를 COUNT 메트릭의 값으로 제출합니다.

RATE

Datadog 에이전트를 실행하는 단일 호스트에서 RATE 메트릭 queue_messages.rate를 제출한다고 해 볼게요. 이 호스트는 플러시 시간 간격에서 [1,1,1,2,2,2,3,3] 값을 방출합니다.

에이전트는 한 시간 간격에서 받은 모든 값을 더한 뒤, 그 총 수를 이 시간 간격의 총 초 수로 나눠 제출해요. 이 경우 플러시 간격이 10초라면, 제출되는 값은 RATE 메트릭의 값으로 1.5가 됩니다.

GAUGE

Datadog 에이전트를 실행하는 단일 호스트에서 GAUGE 메트릭 temperature를 제출한다고 해 볼게요. 이 호스트는 플러시 시간 간격에서 [71,71,71,71,71,71,71.5] 값을 방출합니다.

에이전트는 마지막으로 보고된 숫자, 이 경우 71.5를 GAUGE 메트릭의 값으로 제출해요.

HISTOGRAM

예를 들어 10초 플러시 시간 간격에서 [1,1,1,2,2,2,3,3] 값을 보고하는 웹 서버에서 HISTOGRAM 메트릭 request.response_time.histogram을 제출한다고 해 볼게요. 기본적으로 에이전트는 이 시간 간격에서 이 값들의 통계 분포를 나타내는 다음 메트릭을 Datadog에 제출합니다.

메트릭 이름 값 Datadog 인앱 유형
request.response_time.histogram.avg 1.88 GAUGE
request.response_time.histogram.count 0.8 RATE
request.response_time.histogram.median 2 GAUGE
request.response_time.histogram.95percentile 3 GAUGE
request.response_time.histogram.max 3 GAUGE

DISTRIBUTION

두 웹 서버 webserver:web_1과 webserver:web_2에서 DISTRIBUTION 메트릭 request.response_time.distribution을 제출한다고 해 볼게요. 주어진 플러시 시간 간격에 webserver:web_1은 값 [1,1,1,2,2,2,3,3]으로, webserver:web_2는 값 [1,1,2]로 같은 메트릭을 보고한다고 가정해 봅시다. 이 시간 간격 동안 다음 다섯 가지 집계가 두 웹 서버에서 수집된 모든 값의 전역 통계 분포를 나타냅니다.

메트릭 이름 값 Datadog 인앱 유형
avg:request.response_time.distribution 1.73 GAUGE
count:request.response_time.distribution 11 COUNT
max:request.response_time.distribution 3 GAUGE
min:request.response_time.distribution 1 GAUGE
sum:request.response_time.distribution 19 COUNT
백분위수 집계 계산 (Calculation of percentile aggregations)

GAUGE나 HISTOGRAM 같은 다른 메트릭 유형처럼, DISTRIBUTION 메트릭 유형에는 count, min, max, sum, avg 집계가 있어요. Distribution 메트릭은 처음에 다른 메트릭과 같은 방식(코드에서 설정된 커스텀 태그)으로 태깅됩니다.

추가 백분위수 집계(p50, p75, p90, p95, p99)는 메트릭의 상세 사이드패널에서 distribution 메트릭에 추가할 수 있어요. 앱에서 distribution 메트릭에 백분위수 집계를 추가하면 다음 다섯 가지 추가 집계를 쿼리할 수 있습니다.

메트릭 이름 값 Datadog 인앱 유형
p50:request.response_time.distribution 2 GAUGE
p75:request.response_time.distribution 2 GAUGE
p90:request.response_time.distribution 3 GAUGE
p95:request.response_time.distribution 3 GAUGE
p99:request.response_time.distribution 3 GAUGE

즉, 주어진 시간 간격에 백분위수 집계가 추가된 distribution 메트릭에는 count, sum, min, max, avg, p50, p75, p90, p95, p99의 10가지 집계가 있습니다.

참고: distribution 메트릭 값의 다양한 집계는 앱에서 gauge나 count로 표현되지만, 메트릭 자체는 DISTRIBUTION 유형을 유지해요.

태깅 커스터마이제이션 (Customization of tagging)

이 기능은 호스트 수준 세분화가 필요 없는 메트릭의 태그를 제어할 수 있게 해 줘요. Metrics without Limits™에 대해 더 알아보세요.

참고: 허용목록 기반 태그 커스터마이제이션에서는 태그 제외가 지원되지 않아요. !로 시작하는 태그 추가는 허용되지 않습니다.

제출 (Submission)

COUNT

다음 소스 중 하나에서 COUNT 유형 메트릭을 제출하세요.

제출 소스 제출 방법 (python) 제출 유형 Datadog 인앱 유형
에이전트 체크 self.count(...) COUNT COUNT
에이전트 체크 self.monotonic_count(...) COUNT COUNT
API api.Metric.send(type="count", ...) COUNT COUNT
DogStatsD dog.count(...) COUNT RATE
DogStatsD dog.increment(...) COUNT RATE
DogStatsD dog.decrement(...) COUNT RATE

참고: DogStatsD를 통해 COUNT 메트릭 유형을 제출하면 서로 다른 에이전트 간 관련 비교를 보장하기 위해 메트릭이 앱에서 RATE로 나타나요. 결과적으로 StatsD count는 Datadog에서 소수 값으로 나타날 수 있습니다(초당 단위로 보고하기 위해 시간 간격에 걸쳐 정규화되기 때문이에요).

RATE

다음 소스 중 하나에서 RATE 유형 메트릭을 제출하세요.

제출 소스 제출 방법 (python) 제출 유형 Datadog 인앱 유형
에이전트 체크 self.rate(...) RATE GAUGE
API api.Metric.send(type="rate", ...) RATE RATE

참고: DogStatsD로 RATE 메트릭을 얻으려면 [COUNT] 또는 [HISTOGRAM] 메트릭을 제출하세요. Count 메트릭 값과 <HISTOGRAM>.count 값은 StatsD 플러시 기간에 걸친 메트릭 값의 시간 정규화 델타입니다.

GAUGE

다음 소스 중 하나에서 GAUGE 유형 메트릭을 제출하세요.

제출 소스 제출 방법 (Python) 제출 유형 Datadog 인앱 유형
에이전트 체크 self.gauge(...) GAUGE GAUGE
API api.Metric.send(type="gauge", ...) GAUGE GAUGE
DogStatsD dog.gauge(...) GAUGE GAUGE

HISTOGRAM

다음 소스 중 하나에서 HISTOGRAM 유형 메트릭을 제출하세요.

제출 소스 제출 방법 (Python) 제출 유형 Datadog 인앱 유형
에이전트 체크 self.histogram(...) HISTOGRAM GAUGE, RATE
DogStatsD dog.histogram(...) HISTOGRAM GAUGE, RATE

Datadog 에이전트에 TIMER 메트릭을 제출하는 것은 DogStatsD 내에서 HISTOGRAM 메트릭 유형을 제출하는 것과 동등해요(표준 StatsD의 timer와 혼동하지 마세요). DogStatsD TIMER는 기간(duration) 데이터만 나타내요. 예를 들어 코드 섹션이 실행되는 데 걸리는 시간이나 페이지가 완전히 렌더링되는 데 걸리는 시간 같은 것들이요.

DISTRIBUTION

다음 소스에서 DISTRIBUTION 유형 메트릭을 제출하세요.

제출 소스 제출 방법 (Python) 제출 유형 Datadog 인앱 유형
DogStatsD dog.distribution(...) DISTRIBUTION GAUGE, COUNT
API api_instance.submit_distribution_points(...) DISTRIBUTION GAUGE, COUNT

참고: distribution 메트릭 값의 다양한 집계는 앱에서 gauge나 count로 표현되지만, 메트릭 자체는 DISTRIBUTION 유형을 유지해요.

제출 유형과 Datadog 인앱 유형 (Submission types and Datadog in-app types)

다음은 사용 가능한 모든 메트릭 제출 소스와 방법의 요약이에요. 이 표는 대응하는 메트릭 제출 유형과 인앱 유형 사이의 매핑을 보여 줍니다.

제출 소스 제출 방법 (Python) 제출 유형 Datadog 인앱 유형
에이전트 체크 self.count(...) COUNT COUNT
에이전트 체크 self.monotonic_count(...) COUNT COUNT
에이전트 체크 self.gauge(...) GAUGE GAUGE
에이전트 체크 self.histogram(...) HISTOGRAM GAUGE, RATE
에이전트 체크 self.rate(...) RATE GAUGE
API api.Metric.send(type="count", ...) COUNT COUNT
API api.Metric.send(type="gauge", ...) GAUGE GAUGE
API api.Metric.send(type="rate", ...) RATE RATE
DogStatsD dog.gauge(...) GAUGE GAUGE
DogStatsD dog.distribution(...) DISTRIBUTION DISTRIBUTION
DogStatsD dog.count(...) COUNT RATE
DogStatsD dog.increment(...) COUNT RATE
DogStatsD dog.decrement(...) COUNT RATE
DogStatsD dog.set(...) SET GAUGE
DogStatsD dog.histogram(...) HISTOGRAM GAUGE, RATE

참고: distribution 메트릭 값의 다양한 집계는 앱에서 gauge나 count로 표현되지만, 메트릭 자체는 DISTRIBUTION 유형을 유지해요. 자세한 내용은 이 페이지의 정의 섹션을 참고하세요.

더 알아보기 (Learn more)