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

모니터 평가에서의 as_count()

원문 보기 위키 갱신

모니터 평가에서의 as_count() (as_count() in Monitor Evaluations)

as_count() 와 as_rate() 수정자를 사용하는 쿼리는 계산 방식이 달라서 모니터 평가에서 서로 다른 결과를 낼 수 있어요. as_count() 수정자를 하나 이상 포함하는 모니터는 별도의 평가 경로를 사용하며, 이 경로는 연산과 시간 집계가 수행되는 순서를 바꿔요.

출처: 문서

본문

오류율 예제 (Error rate example)

requests.error와 requests.total 메트릭을 사용해 5분 동안의 오류율을 모니터링한다고 가정해볼게요. 5분 시간 프레임에 대해 정렬된(align된) 시계열 포인트로 단일 평가를 수행한다고 생각해보세요:

분자(Numerator): sum:requests.error{*}

| Timestamp           | Value |
|:--------------------|:------|
| 2018-03-13 11:00:30 | 1     |
| 2018-03-13 11:01:30 | 2     |
| 2018-03-13 11:02:40 | 3     |
| 2018-03-13 11:03:30 | 4     |
| 2018-03-13 11:04:40 | 5     |

분모(Denominator): sum:requests.total{*}

| Timestamp           | Value |
|:--------------------|:------|
| 2018-03-13 11:00:30 | 10    |
| 2018-03-13 11:01:30 | 10    |
| 2018-03-13 11:02:40 | 10    |
| 2018-03-13 11:03:30 | 10    |
| 2018-03-13 11:04:40 | 10    |

계산하는 2가지 방법

이 쿼리를 classic_eval_path 라고 부르겠어요:

sum(last_5m): sum:requests.error{*}.as_rate() / sum:requests.total{*}.as_rate()

그리고 이 쿼리는 as_count_eval_path 라고 부르겠어요:

sum(last_5m): sum:requests.error{*}.as_count() / sum:requests.total{*}.as_count()

경로에 따른 평가 결과를 비교해볼게요:

경로 (Path) 동작 (Behavior) 확장된 표현식 (Expanded expression) 결과 (Result)
classic_eval_path 나눗셈 이후에 집계 함수 적용 (1/10 + 2/10 + 3/10 + 4/10 + 5/10) 1.5
as_count_eval_path 나눗셈 이전에 집계 함수 적용 (1+2+3+4+5) / (10+10+10+10+10) 0.3

위 두 평가는 모두 수학적으로 올바르다는 점을 참고해요. 의도에 맞는 방법을 선택하면 돼요.

classic_eval_path 를 이렇게 시각화하면 이해하기 쉬워요:

sum(last_5m):error/total

그리고 as_count_eval_path 는 이렇게요:

sum(last_5m):error
-----------------
sum(last_5m):total

일반적으로 avg 시간 집계와 .as_rate() 를 쓰는 것이 합리적이지만, 오류율에는 sum 집계와 .as_count() 를 권장해요. sum 이외의 집계 방법은 .as_count() 와 함께 사용하는 것이 타당하지 않으며(사용할 수도 없고) 그래요.

게이지 메트릭과 pct_change() (Gauge metrics and pct_change())

평가 경로는 pct_change() 같은 롤업 의존 함수와 함께 사용할 때 게이지 메트릭에도 영향을 줘요. as_count() 없이 모니터는 classic 평가 경로를 사용하는데, 이 경로에서는 pct_change()가 버킷별로 계산되고 그 값들이 평가 창 전체에 걸쳐 합산돼요. 희소한 게이지 메트릭의 경우 이 값이 -100%보다 훨씬 낮아질 수 있어요.

경로 (Path) 평가 순서 (Evaluation order) 희소 게이지 메트릭에 미치는 영향 (Effect on sparse gauge metrics)
classic_eval_path (as_count() 없음) pct_change()가 버킷별로 적용된 후, 값이 창 전체에 걸쳐 합산됨 큰 음수 값이 나올 수 있음 (예: -1,500%)
as_count_eval_path 시계열이 먼저 버킷화·집계된 후, pct_change()가 창 수준에서 적용됨 의도한 창 수준의 결과가 나옴

게이지 메트릭에 count 스타일 평가 경로를 사용하려면 쿼리에 as_count()를 추가하면 돼요.

궁금한 점이 있다면 Datadog 지원 팀에 문의해요.