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

보간

원문 보기 위키 갱신

보간 (Interpolation)

보간 함수는 메트릭의 누락된 값이나 빈 시간 구간을 채워 주는 함수예요. 메트릭이 희소(sparse)해서 중간에 값이 비어 있는 경우에도 그래프나 모니터 평가에서 빈틈 없이 처리하고 싶을 때 유용합니다.

출처: 문서

본문

채우기 (Fill)

함수 설명 예시
fill() 메트릭의 누락된 값을 보간(interpolate)합니다. <METRIC_NAME>{*}.fill(<METHOD>, <LIMIT>)

fill() 함수에는 두 가지 파라미터가 있어요:

  • METHOD: 보간 방법으로 사용할 함수입니다. 다음 중에서 고르면 됩니다:

    • linear: 간격의 시작과 끝 사이를 선형으로 보간합니다.
    • last: 간격의 마지막 값으로 간격을 채웁니다.
    • zero: 간격을 0 값으로 채웁니다.
    • null: 보간을 비활성화합니다.
  • LIMIT [선택, 기본값=300, 최대값=600]: 보간하고 싶은 간격의 최대 크기를 나타내는 보간 한계(초)입니다.

.fill() 함수와 그것이 보간에 미치는 영향에 대한 자세한 설명은 보간과 Fill 수정자를 읽어 보세요.

기본 제로 (Default zero)

함수 설명 예시
default_zero() 희소 메트릭에 기본값을 추가합니다. default_zero(system.load.1{*})

default_zero() 함수는 빈 시간 구간을 값 0으로 채우거나, 보간이 활성화되어 있으면 보간으로 채워요. 참고: GAUGE 유형 메트릭에는 보간이 기본적으로 활성화되어 있습니다. 대부분의 함수와 마찬가지로 default_zero()는 시간·공간 집계 이후에 적용됩니다.

사용 사례 (Use cases)

default_zero() 함수는 다음 사용 사례를 목적으로 합니다 (다른 사용 사례에서도 동작할 수 있어요):

  • 희소 메트릭에 산술 연산을 수행할 때 게이지를 0으로 정렬 (참고: as_count() 또는 as_rate()로 쿼리하는 COUNT 또는 RATE 유형 메트릭은 항상 0으로 정렬되므로, default_zero()를 사용해도 정렬 방식은 바뀌지 않습니다. GAUGE 유형 메트릭에만 영향을 줍니다).
  • 모니터가 데이터 없음(no-data) 상태에 들어가기 전에 해소(resolve)하게 하기. 단순 알림과 다중 알림 모두에서 동작하지만, 값 0이 모니터를 트리거해서는 안 됩니다. 예를 들어 쿼리 avg(last_10m):avg:system.cpu.idle{*} < 10인 모니터에는 동작하지 않아요. 이 모니터는 0으로 평가되면 (해소가 아니라) 트리거되기 때문입니다. as_count() 쿼리를 사용하는 에러율 모니터에는 이 함수를 사용하지 않는 게 좋아요. 자세한 내용은 모니터 평가의 as_count() 가이드를 참고하세요.
  • 시각적 이유나 모니터 평가에서 timeseries의 최소/최대/평균에 영향을 주기 위해 희소한(비어 있지 않은) 시리즈의 빈 구간을 채우기. 평가 창에 데이터 포인트가 하나도 없으면 default_zero()는 아무 효과도 없어요.
  • 데이터가 없을 때 timeseries 위젯에 값 0을 표시하기.

예시 (Example)

default_zero() 함수가 어떻게 동작하는지 보여 주기 위해, DogStatsD를 사용해 만든 커스텀 메트릭의 단일 포인트를 생각해 볼게요:

$ echo -n "custom_metric:1|g" | nc -4u -w0 127.0.0.1 8125

이 메트릭을 지난 30분 동안 쿼리하면 타임스탬프가 하나만 나타나요. 쿼리의 롤업 간격 중 하나에만 포인트가 있기 때문입니다:

avg:custom_metric{*}

+---------------------+---------------+
| Timestamp           | custom_metric |
+---------------------+---------------+
| ---------           | ---------     |
| 2019-04-17 17:45:00 | 1             |
+---------------------+---------------+

default_zero() 함수는 이 포인트를 시간상 5분 앞으로 보간하고(게이지의 기본 보간 한계), 나머지 빈 구간을 0으로 채워요:

default_zero(avg:custom_metric{*})

+---------------------+-----------------------------+
| Timestamp           | default_zero(custom_metric) |
+---------------------+-----------------------------+
| ---------           | ---------                   |
| 2019-04-17 17:30:00 | 0                           |
| 2019-04-17 17:31:00 | 0                           |
...
| 2019-04-17 17:44:00 | 0                           |
| 2019-04-17 17:45:00 | 1                           |
| 2019-04-17 17:46:00 | 1                           |
| 2019-04-17 17:47:00 | 1                           |
| 2019-04-17 17:48:00 | 1                           |
| 2019-04-17 17:49:00 | 1                           |
| 2019-04-17 17:50:00 | 1                           |
| 2019-04-17 17:51:00 | 0                           |
| 2019-04-17 17:52:00 | 0                           |
...
+---------------------+-----------------------------+

더 알아보기 (Learn more)