아웃라이어 모니터
Outlier detection(아웃라이어 감지)은 특정 그룹이 동료 그룹과 다르게 동작할 때 감지할 수 있게 해주는 알고리즘 기능이에요. 예를 들어 풀(pool)에 있는 한 웹 서버가 비정상적인 수의 요청을 처리하거나, 한 AWS 가용 영역에서 다른 영역에 비해 500 오류가 훨씬 많이 발생하는 것을 감지할 수 있지요.
출처: 문서
본문
개요
Outlier detection은 특정 그룹이 동료 그룹과 다르게 동작할 때 감지할 수 있게 해주는 알고리즘 기능이에요. 예를 들어 풀(pool)에 있는 한 웹 서버가 비정상적인 수의 요청을 처리하고 있거나, 한 AWS 가용 영역에서 다른 영역에 비해 500 오류가 상당히 많이 발생하는 것을 감지할 수 있어요.
모니터 생성
Datadog에서 아웃라이어 모니터를 만들려면 Monitors > New Monitor > Outlier로 이동하세요.
메트릭 정의
현재 Datadog에 보고되는 모든 메트릭을 모니터에 사용할 수 있어요. 자세한 내용은 Metric Monitor 페이지를 참고하세요.
아웃라이어 모니터는 세 명 이상의 구성원(호스트, 가용 영역, 파티션 등)이 있어 균일한 동작을 보이는 그룹이 있는 메트릭이 필요해요.
알림 조건 설정
- 지난
5 minutes,15 minutes,1 hour등 동안 각 아웃라이어<GROUP>에 대해 별도의 알림을 트리거하거나,custom을 사용해 1분에서 1년 사이의 값을 설정해요. - 알고리즘
MAD,DBSCAN,scaledMAD, 또는scaledDBSCAN사용 - tolerance(허용 오차):
0.33,1.0,3.0등 - %:
10,20,30등(MAD알고리즘만 해당)
아웃라이어 모니터를 설정할 때 시간 창은 중요한 고려 사항이에요. 시간 창이 너무 크면 제때 알림을 받지 못할 수 있어요. 시간 창이 너무 짧으면 일회성 급증에 대한 알림이 강건하지 않아요.
알림이 제대로 보정되도록 미리 보기 그래프에서 시간 창을 설정하고, 뒤로(«) 버튼을 사용해 알림을 트리거했을 과거의 아웃라이어를 살펴보세요. 또한 이 기능을 사용해 특정 아웃라이어 알고리즘에 맞게 매개변수를 조정할 수 있어요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-new-monitor-graph-calibrate.8e5664c69bdce24ddb3ba1015965acd9.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-new-monitor-graph-calibrate.8e5664c69bdce24ddb3ba1015965acd9.png?auto=format&fit=max&w=850&dpr=2 2x" alt="outliers new monitor graph calibrate" /%}
알고리즘
Datadog는 두 가지 유형의 아웃라이어 감지 알고리즘을 제공해요: DBSCAN/scaledDBSCAN 및 MAD/scaledMAD. 기본 알고리즘인 DBSCAN을 사용하는 것이 권장돼요. 올바른 아웃라이어를 감지하는 데 어려움이 있으면 DBSCAN의 매개변수를 조정하거나 MAD 알고리즘을 시도해보세요. 메트릭이 대규모이고 밀접하게 클러스터되어 있다면 scaled 알고리즘이 유용할 수 있어요.
{% tab title="DBSCAN" %} DBSCAN(density-based spatial clustering of applications with noise)은 널리 사용되는 클러스터링 알고리즘이에요. 전통적으로 DBSCAN은 다음을 사용해요.
- 두 점이 가깝다고 간주되는 거리 임계값을 지정하는 매개변수
𝜀. - 점이 응집(agglomerating)을 시작하기 전에 점의
𝜀-radius내에 있어야 하는 최소 점 수.
Datadog는 시계열에서 아웃라이어를 감지하기 위해 DBSCAN의 단순화된 형태를 사용해요. 각 그룹은 d차원(d는 시계열의 요소 수)의 한 점으로 간주돼요. 모든 점이 응집할 수 있으며, 가장 큰 클러스터에 없는 점은 아웃라이어로 간주돼요. 초기 거리 임계값은 각 시점에서 기존 시계열 값들의 중앙값을 취해 새 중앙값 시계열을 만들어 설정돼요. 각 그룹과 중앙값 시리즈 사이의 유클리드 거리가 계산돼요. 임계값은 이 거리들의 중앙값에 정규화 상수를 곱한 값으로 설정돼요.
매개변수 이 DBSCAN 구현은 하나의 매개변수 tolerance를 사용하는데, 이것은 초기 임계값에 곱해져 DBSCAN의 거리 매개변수 𝜀를 산출하는 상수예요. 그룹이 동료 그룹과 얼마나 유사하게 동작할 것으로 기대하는지에 따라 tolerance 매개변수를 설정하세요 — 값이 클수록 그룹이 동료 그룹에서 벗어날 수 있는 허용 범위가 커져요.
{% /tab %}
{% tab title="MAD" %} MAD(median absolute deviation, 중앙값 절대 편차)는 강건한 변동성 측정이며, 표준 편차의 강건한 대응물로 볼 수 있어요. 강건한 통계는 아웃라이어의 영향을 받지 않는 방식으로 데이터를 설명해요.
매개변수 아웃라이어 모니터에 MAD를 사용하려면 tolerance와 % 매개변수를 구성하세요.
Tolerance는 점(그룹과 무관하게)이 아웃라이어로 간주되기 위해 중앙값에서 벗어나야 하는 편차 수를 지정해요. 이 매개변수는 데이터의 예상 변동성에 따라 조정해야 해요. 예를 들어 데이터가 일반적으로 작은 값 범위 내에 있다면 이 값을 작게 설정해야 해요. 반대로 점들이 크게 변할 수 있다면 변동성이 오탐을 유발하지 않도록 더 높은 척도를 설정하세요.
Percent는 그룹에서 아웃라이어로 간주되는 점의 백분율을 가리켜요. 이 백분율을 초과하면 전체 그룹이 아웃라이어로 표시돼요. {% /tab %}
{% tab title="Scaled" %} DBSCAN과 MAD에는 scaled 버전이 있어요(scaledDBSCAN 및 scaledMAD). 대부분의 상황에서 scaled 알고리즘은 일반 대응물과 동일하게 동작해요. 하지만 DBSCAN/MAD 알고리즘이 밀접하게 클러스터된 메트릭 그룹 내에서 아웃라이어를 식별하고 있고, 아웃라이어 감지 알고리즘이 메트릭의 전체 규모에 맞춰 확장되길 원한다면 scaled 알고리즘을 시도해보세요. {% /tab %}
DBSCAN vs. MAD
그렇다면 어떤 알고리즘을 사용해야 할까요? 대부분의 아웃라이어에 대해 기본 설정에서 어떤 알고리즘도 잘 수행해요. 하지만 한 알고리즘이 더 적절한 미묘한 경우가 있어요.
다음 이미지에서 호스트 그룹이 함께 버퍼를 비우고 있는 반면, 한 호스트는 버퍼를 약간 늦게 비우고 있어요. DBSCAN은 이것을 아웃라이어로 잡아내지만 MAD는 그렇지 않아요. 그룹의 동기화가 단지 호스트가 동시에 재시작된 산물(sartifact)이라면 MAD를 선호하는 경우가 이에 해당해요. 반면, 메트릭이 호스트 간에 동기화되어야 하는 예약 작업을 나타낸다면 DBSCAN이 올바른 선택이에요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-flushing.93ff2239285b0c0d9bee79e57f269b60.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-flushing.93ff2239285b0c0d9bee79e57f269b60.png?auto=format&fit=max&w=850&dpr=2 2x" alt="outliers flushing" /%}
고급 알림 조건
고급 알림 옵션(auto resolve, new group delay 등)에 대한 자세한 지침은 Monitor configuration 페이지를 참고하세요.
알림
Configure notifications and automations 섹션에 대한 자세한 지침은 Notifications 페이지를 참고하세요.
API
프로그래매틱하게 아웃라이어 모니터를 만들려면 Datadog API reference를 참고하세요. Datadog는 API용 쿼리를 만들 때 모니터의 JSON을 내보내는 것을 권장해요.
문제 해결
아웃라이어 알고리즘은 동료 그룹과 다르게 동작하는 그룹을 식별하도록 설정되어 있어요. 아래와 같은 "밴딩(banding)" 동작(각 밴드가 서로 다른 샤드를 나타낼 수 있음)을 그룹이 보인다면, Datadog는 각 밴드에 식별자를 태그하고 각 밴드에 대해 별도로 아웃라이어 감지 알림을 설정할 것을 권장해요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-banding.b6b3988455ca591d7379d50853029095.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/outliers/outliers-banding.b6b3988455ca591d7379d50853029095.png?auto=format&fit=max&w=850&dpr=2 2x" alt="outliers banding" /%}
더 알아보기 (Learn more)
추가로 도움이 되는 문서, 링크, 아티클: