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

롤업

원문 보기 위키 갱신

롤업 (Rollup)

롤업은 메트릭 데이터를 특정 시간 간격으로 묶어서 집계하는 기능이에요. 모든 메트릭 쿼리는 본질적으로 집계가 일어나지만, 쿼리 끝에 .rollup() 함수를 붙이면 기본값을 대체하는 커스텀 시간 집계(time aggregation)를 수행할 수 있습니다.

출처: 문서

본문

모든 메트릭 쿼리는 본질적으로 집계됩니다. 하지만 쿼리 끝에 .rollup() 함수를 붙이면 기본값을 대체하는 커스텀 시간 집계를 수행할 수 있어요. 이 함수를 사용해 다음을 정의할 수 있습니다:

  • 롤업 <interval>: 데이터가 집계되는 시간 간격 (쿼리에서 강제하는 롤업 간격보다 크면).
  • 롤업 <aggregator>: 주어진 롤업 시간 간격 내에서 데이터 포인트가 집계되는 방식.

롤업을 적용하려면 그래프 편집기의 함수 추가(Σ) 버튼으로 이동하세요:

참고: 분포(Distribution) 메트릭 유형에는 롤업 aggregator 파라미터가 없어요. 이 메트릭 유형은 시간과 공간 모두에서 집계됩니다. 자세한 내용은 백분위수 분포의 롤업 문서를 참고하세요.

이 함수는 두 개의 파라미터 <AGGREGATOR>와 선택적으로 <INTERVAL>을 받아요: .rollup(<AGGREGATOR>,<INTERVAL>) 또는 .rollup(<AGGREGATOR>).

파라미터 설명
<AGGREGATOR> avg, sum, min, max, count가 될 수 있으며, 주어진 시간 간격 내에서 데이터 포인트가 집계되는 방식을 정의합니다. 강제 기본값: avg.
<INTERVAL> 표시되는 두 데이터 포인트 사이의 간격 시간(초)입니다. 선택 사항입니다.

개별적으로 또는 함께 사용할 수 있어요. 예를 들어 .rollup(sum,120)처럼요. 다음 막대 그래프는 .rollup() 함수를 사용하지 않고 호스트의 일주일치 CPU 사용량을 표시한 것입니다.

다음 막대 그래프는 같은 메트릭을 .rollup(avg,86400)으로 하루 단위 롤업해 그린 것입니다.

이동 롤업 (Moving rollup)

함수 설명 예시
moving_rollup 마지막 X초의 포인트를 결합하는 롤업입니다. moving_rollup(<METRIC_NAME>, <INTERVAL> , <AGGREGATOR>)

moving_rollup() 함수를 쿼리에 적용하면 가장 최근의 지정된 시간 범위, 즉 마지막 X초의 포인트를 결합할 수 있어요. .rollup()과 마찬가지로 <AGGREGATOR>는 sum/min/max/count/avg가 될 수 있으며 주어진 시간 간격 내에서 데이터 포인트가 집계되는 방식을 정의합니다.

롤업 간격: 강제 vs 커스텀 (Rollup interval: enforced vs custom)

그래프를 그릴 때 Datadog는 timeseries당 포인트 수에 제한을 둬요. 시각적 명확성을 유지하기 위해 시리즈는 최대 1,500개의 포인트를 가질 수 있습니다. 이 제한을 지키기 위해 Datadog는 기본적으로 avg 방식을 사용해 데이터 포인트를 자동으로 롤업하며, 특정 메트릭의 시간 간격 내 모든 데이터 포인트의 평균을 효과적으로 표시합니다. 기본 롤업 시간 간격은 데이터가 어떻게 시각화되는지에 따라 달라져요. 다음 표에서 기본 시간 간격들을 확인할 수 있습니다:

시간 범위 롤업 간격, 라인 그래프 롤업 간격, 막대 그래프 롤업 간격, API
지난 1분 1s 1s 1s
지난 5분 2s 5s 2s
지난 15분 5s 10s 5s
지난 30분 10s 30s 10s
지난 1시간 20s 1m 20s
지난 4시간 1m 2m 1m
지난 1일 5m 20m 5m
지난 2일 10m 30m 10m
지난 1주 1hr 2hr 1hr
지난 1개월 4hr 12hr 4hr
지난 3개월 12hr 1d 12hr
지난 6개월 1d 1d 1d
지난 1년 1d 1w 1d

커스텀 .rollup() 함수를 사용하면 적용되는 시간 집계 유형(avg, min, max, count, sum)과 선택적으로 롤업할 시간 간격을 지정할 수 있어요. 이 함수를 사용해 최대 1,500포인트 한도까지 기본값과 다른 롤업 시간 간격을 설정할 수 있으며, 하루 동안 분당 최대 1포인트를 지원합니다.

참고:

  • 쿼리 값(Query Value) 위젯은 라인 그래프·막대 그래프 위젯이 사용하는 1,500포인트 대신 150포인트를 목표로 해요. 같은 시간 창에서는 이로 인해 쿼리 값 위젯의 유효 롤업 간격이 더 거칠어집니다.

  • COUNT 및 RATE 유형 메트릭의 쿼리에는 UI에서 .as_count() 수정자가 자동으로 추가되며, 이는 사용되는 롤업 방식을 sum으로 설정하고 보간을 비활성화해요. 이 .as_count()는 쿼리 끝에 명시적으로 표시됩니다.

.as_count() 및 .as_rate() 사용 방법에 대한 자세한 내용은 StatsD 메트릭 시각화 블로그 게시물을 참고하거나, 인앱 수정자 문서에서 이러한 함수의 영향에 대해 자세히 알아보세요.

달력 정렬 쿼리에서의 롤업 (Rollup with calendar-aligned queries)

.rollup() 함수를 달력 정렬(calendar-aligned) 쿼리와 함께 사용하면 메트릭 데이터를 시간에 따라 버킷화하는 방식을 커스터마이즈할 수 있어요. 이 기능을 사용해 다음과 같이 유연하게 정의할 수 있습니다:

  • 시작 날짜와 시간대를 조정할 수 있는 달력 정렬 월간 쿼리. 예를 들어 작년 2월과 12월의 월별 클라이언트 오류를 비교할 수 있어요.
  • 시작 날짜와 시간대를 조정할 수 있는 주간 롤업. 예를 들어 (주가 월요일에 시작한다면) 열려 있는 주간 트랜잭션이 몇 개인지 확인할 수 있어요.
  • 시작 시간과 시간대를 조정할 수 있는 일간 롤업. 예를 들어 (하루가 태평양 시간 자정에 시작한다면) 오늘 발생한 관심 이벤트가 몇 개인지 확인할 수 있어요.

달력 정렬 롤업 구문은 .rollup()을 달력 단위와 선택적인 정렬 날짜·시간대로 확장합니다:

.rollup(<AGGREGATOR>, <CALENDAR_UNIT>, <ALIGNMENT>, '<TIMEZONE>')

파라미터 설명
<AGGREGATOR> avg, sum, min, max, count가 될 수 있습니다.
<CALENDAR_UNIT> daily, weekly, monthly입니다.
<ALIGNMENT> weekly의 경우: 시작 요일을 소문자 요일 이름(monday, tuesday, …, sunday)으로 지정합니다. 생략하면 기본값은 sunday입니다. daily의 경우: 12am 같은 시작 시간. monthly의 경우: 시작 날짜.
<TIMEZONE> 선택 사항. America/New_York 또는 Europe/Paris 같은 IANA 시간대 문자열입니다. 생략하면 기본값은 UTC입니다.

예시:

월요일(UTC)에 시작하는 주간 롤업:

sum:requests.count{*}.as_count().rollup(sum, weekly, monday)

동부 시간 월요일에 시작하는 주간 롤업:

sum:requests.count{*}.as_count().rollup(sum, weekly, monday, 'America/New_York')

태평양 시간 자정에 시작하는 일간 롤업:

sum:requests.count{*}.as_count().rollup(sum, daily, 12am, 'America/Los_Angeles')

모니터에서의 롤업 (Rollups in monitors)

롤업 간격과 모니터의 평가 창 사이에 오정렬이 발생할 수 있으므로, 롤업은 모니터 쿼리에서 보통 피해야 해요. 롤업 간격의 시작과 끝은 UNIX 시간에 맞춰지며 모니터 쿼리의 시작·끝과는 맞지 않습니다. 따라서 모니터가 소량의 데이터만 담긴 불완전한 롤업 간격을 평가(하고 트리거)할 수 있어요. 이 문제를 피하려면 설정한 롤업 간격의 길이만큼(최소한) 모니터 평가를 지연시키세요.

모니터 쿼리에 예기치 않게 No Data가 표시된다면 롤업 및 평가 창 설정을 검토해 보세요. 자세한 내용은 모니터의 No Data 문제 해결을 참고하세요.

더 알아보기 (Learn more)