롤업
롤업 (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 문제 해결을 참고하세요.