산술 및 희소 메트릭 모니터링

개요

산술을 사용한 쿼리를 기반으로 알림을 생성하는 것이 일반적입니다. 모니터의 세팅이 쿼리를 평가하는데 적절한지 확인하기 위한 몇 가지 도구와 동작이 있습니다.

희소 메트릭

분모가 희소 또는 0 메트릭의 경우 일부 결과가 거부될 수 있습니다.

다음 메트릭 값을 고려하세요:

  • A = (10, 10, 10)
  • B = (0, 1, -)

공식 a/b에 대해 모니터는 다음과 같이 평가합니다:

10/0 + 10/1 + 10/NaN = 10

평가 창이 “null” 버킷 (10/NaN + 10/Nan + … + 10/Nan)을 많이 포함하고 있는 경우 평가가 이루어지지 않습니다. 이를 해결하기 위해 메트릭을 조정하거나 아래 방법 중 하나를 사용하시기 바랍니다.

정렬이 안 되어 있으며 희박한 메트릭 해결 방법

.fill()

모든 타임 버킷이 유효값을 가지고 있는지 확인하려면 .fill() 기능을 적용합니다. 게이지 메트릭 유형의 기본 보간은 선형 또는 5분 동안의 .fill(linear)입니다. *카운트레이트 유형 메트릭 유형의 기본값은 보간을 사용하지 않는 .fill(null) 입니다. Datadog은 일반적으로 모니터의 카운트/레이트 메트릭에 보간을 사용하지 않도록 권장합니다.

원본:sum:my_metric.has_gaps.gauge{env:a} by {timer,env}

| Timestamp           | timer:norm,env:a | timer:offset,env:a |
|:--------------------|:-----------------|:-------------------|
| 2019-03-29 12:00:00 | 1                |                    |
| 2019-03-29 12:05:00 |                  | 1                  |
| 2019-03-29 12:10:00 | 0                |                    |
| 2019-03-29 12:15:00 |                  | 1                  |
| 2019-03-29 12:20:00 | 1                |                    |
| 2019-03-29 12:25:00 |                  | 1                  |
| 2019-03-29 12:30:00 | 1                |                    |

my_metric.has_gaps.gauge게이지 메트릭 유형이므로 5분 동안 기본 선형 보간이 있습니다. 그러나 메트릭이 10분마다 보고를 한다고 가정할 때 이 쿼리를 사용해 보세요:

sum(last_30m):sum:my_metric.has_gaps.gauge{timer:norm,env:a} / sum:my_metric.has_gaps.gauge{timer:offset,env:a}

대체로 “건너뜀"이라는 평가를 보게 될 것입니다.

경로평가결과
classic_eval_path1/Nan + Nan/1 + … + 1/Nan + Nan/1N/A

보간을 조정하여 모든 시간 간격에 메트릭이 있는지 확인할 수 있습니다.

수정됨: sum:my_metric.has_gaps.gauge{env:a} by {timer,env}.fill(last,900)

| Timestamp           | timer:norm,env:a | timer:offset,env:a |
|:--------------------|:-----------------|:-------------------|
| 2019-03-29 12:00:00 | 1                | (1)                |
| 2019-03-29 12:05:00 | 1                | 1                  |
| 2019-03-29 12:10:00 | 0                | 1                  |
| 2019-03-29 12:15:00 | 0                | 1                  |
| 2019-03-29 12:20:00 | 1                | 1                  |
| 2019-03-29 12:25:00 | 1                | 1                  |
| 2019-03-29 12:30:00 | 1                | 1                  |

수정된 쿼리:

sum(last_30m):sum:my_metric.has_gaps.gauge{timer:norm,env:a}.fill(last,900) / sum:my_metric.has_gaps.gauge{timer:offset,env:a}.fill(last,900)

.fill(last,900)를 사용한 새로운 결과:

경로평가결과
classic_eval_path(1)/1 + 1/1 + 0/1 + 0/1 + 1/1 + 1/1 + 1/15

짧은 평가 창

짧은 평가 창에 분할이 있는 모니터에서 타이밍 문제가 발생할 수 있습니다. 모니터 쿼리가 1분의 평가 창에 분할을 요구하는 경우 분자와 분모는 몇 초 정도의 시간 버킷을 나타냅니다. 쿼리 시간에 분자 및 분모에 대한 메트릭을 모두 사용할 수 없는 경우 원치 않는 평가 값을 얻을 수 있습니다.

| Timestamp             | sum:my_num{*}       | sum:my_denom{*}     |
| :-------------------- | :------------------ | :------------------ |
| ...                   | ...                 | ...                 |
| 2019-03-29 13:30:50   | 900                 | 1000                |
| 2019-03-29 13:30:52   | 900                 | 1000                |
| 2019-03-29 13:30:54   | 900                 | 1000                |
| 2019-03-29 13:30:56   | 120 (inc)           | 850 (inc)           |

min(last_1m):sum:my_num{*}/sum:my_denom{*}와 같은 쿼리는 최소값이 왜곡되어 의도치 않게 모니터를 트리거 할 수 있습니다.

따라서 짧은 평가 창에 대한 분할이 있는 쿼리에 30-60초의 짧은 평가 지연을 추가하는 것을 고려해 볼 수 있습니다. 또는 5분 평가 창으로 변경하는 것이 도움이 될 수 있습니다.

이 부분과 관련하여 궁금한 점이 있으시면 Datadog 고객 지원팀에 문의해 주세요.