복합 모니터
복합 모니터(Composite Monitor)는 개별 모니터 여러 개를 하나의 모니터로 결합해 더 구체적인 알림 조건을 정의하게 해줘요. 기본 모니터들을 Boolean 연산자로 조합해서, 여러 조건이 동시에 성립할 때만 알림을 받도록 설정할 수 있지요.
출처: 문서
본문
개요
복합 모니터는 개별 모니터들을 하나의 모니터로 결합해 더 구체적인 알림 조건을 정의해요.
기존 모니터를 선택해 복합 모니터를 만들어요. 예를 들어 모니터 A와 모니터 B를 선택하고, Boolean 연산자를 사용해 A && B 같은 트리거 조건을 설정해요. 개별 모니터들의 값이 동시에 복합 모니터의 트리거 조건을 참으로 만드는 상태가 되면 복합 모니터가 트리거돼요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/composite/overview.f8d7c2df9fa9c739f3a96136fb62773a.jpg?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/composite/overview.f8d7c2df9fa9c739f3a96136fb62773a.jpg?auto=format&fit=max&w=850&dpr=2 2x" alt="composite example" /%}
구성 관점에서 복합 모니터는 구성 요소 모니터(이하 구성 모니터)와 독립적이에요. 복합 모니터의 알림 정책을 수정해도 구성 모니터들의 정책에는 영향을 주지 않고, 그 반대도 마찬가지예요. 또한 복합 모니터를 삭제해도 구성 모니터는 삭제되지 않아요. 복합 모니터는 다른 모니터를 소유하지 않고 결과만 사용해요. 그리고 여러 복합 모니터가 같은 개별 모니터를 참조할 수도 있어요.
참고 사항
individual monitors(개별 모니터),constituent monitors(구성 모니터),non-composite monitors(비복합 모니터)라는 용어는 모두 복합 모니터가 자신의 상태를 계산하는 데 사용하는 모니터를 가리켜요.- 복합 결과에는 공통 그룹화(common groupings)가 필요해요. 공통 그룹화가 없는 모니터를 선택하면, 표현식에서 선택한 모니터들이 복합 결과를 만들지 못할 수 있어요.
- 복합 모니터는 다른 복합 모니터를 기반으로 할 수 없어요.
모니터 생성
Datadog에서 복합 모니터를 만들려면 메인 네비게이션을 사용하세요: Monitors –> New Monitor –> Composite.
모니터 선택 및 트리거 조건 설정
모니터 선택
복합 모니터에 사용할 개별 모니터를 최대 10개까지 선택해요. 모니터는 서로 다른 알림 유형(단순 알림, 다중 알림, 또는 둘의 조합)일 수 있어요. 어떤 개별 모니터도 그 자체가 복합 모니터일 수는 없어요. 첫 번째 모니터를 선택하면 UI가 그 모니터의 알림 유형과 현재 상태를 보여줘요.
다중 알림 모니터를 선택하면 UI가 모니터의 group-by 절과 현재 보고 중인 고유 소스 수를 보여줘요. 예: Returns 5 host groups. 다중 알림 모니터를 결합할 때 이 정보는 자연스럽게 짝이 맞는 모니터를 고르는 데 도움이 돼요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/composite/composite_example.64f2935be58e90661178ccc52183c20d.jpg?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/composite/composite_example.64f2935be58e90661178ccc52183c20d.jpg?auto=format&fit=max&w=850&dpr=2 2x" alt="composite example" /%}
같은 그룹을 가진 모니터를 선택해야 해요. 그렇지 않으면 UI가 그런 복합 모니터는 절대 트리거되지 않을 수 있다고 경고해요:
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/composite/composite_common_group.8087e51f97763c99ee47a11111a1df79.jpg?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/composite/composite_common_group.8087e51f97763c99ee47a11111a1df79.jpg?auto=format&fit=max&w=850&dpr=2 2x" alt="composite common groups" /%}
같은 그룹을 가진 다중 알림 모니터를 선택해도, 모니터들이 공통 보고 소스(common reporting sources, 공통 그룹화라고도 불러요)가 없으면 여전히 Group Matching Error가 보일 수 있어요. 공통 보고 소스가 없으면 Datadog는 복합 모니터의 상태를 계산할 수 없고, 복합 모니터는 절대 트리거되지 않아요. 하지만 경고를 무시하고 모니터를 만들 수도 있어요. 자세한 내용은 How composite monitors select common reporting sources를 참고하세요.
경고를 유발하지 않는 두 번째 모니터를 선택하면, UI는 Trigger when 필드에 기본 트리거 조건 a && b를 채우고 제안된 복합 모니터의 상태를 보여줘요.
트리거 조건 설정
Trigger when 필드에서 Boolean 연산자로 원하는 트리거 조건을 작성하세요. 개별 모니터는 a, b, c 등의 라벨로 참조해요. 괄호를 사용해 연산자 우선순위를 제어하고 더 복잡한 조건을 만들 수 있어요.
다음은 모두 유효한 트리거 조건이에요:
!(a && b)
a || b && !c
(a || b) && (c || d)
고급 알림 조건
데이터 없음(No data)
복합 모니터가 no-data 상태일 때 알리지 않거나(Do not notify) 알리도록(Notify) 선택해요. 여기서 선택한 내용은 개별 모니터의 Notify no data 설정에 영향을 주지 않아요. 다만 복합 모니터가 No Data에 알림을 보내려면, 개별 모니터와 복합 모니터 모두 데이터가 누락될 때 알리도록 설정되어 있어야 해요.
기타 옵션
고급 알림 옵션(auto resolve 등)에 대한 자세한 지침은 Monitor configuration 페이지를 참고하세요.
알림
알림에서 복합 모니터의 구성 모니터로부터 템플릿 변수를 사용하는 방법에 대한 안내는 composite monitor variables를 참고하세요. Configure notifications and automations(알림 및 자동화 구성) 섹션에 대한 자세한 지침은 Notifications 페이지를 참고하세요.
API
API를 사용할 때 복합 모니터의 쿼리는 하위 모니터들을 모니터 ID로 정의해요.
예를 들어, 두 개의 비복합 모니터에 다음과 같은 쿼리와 ID가 있다고 해볼게요.
"avg(last_1m):avg:system.mem.free{role:database} < 2147483648" # Monitor ID: 1234
"avg(last_1m):avg:system.cpu.system{role:database} > 50" # Monitor ID: 5678
위 모니터들을 결합한 복합 모니터의 쿼리는 "1234 && 5678", "!1234 || 5678" 등일 수 있어요.
복합 모니터가 작동하는 방식
이 섹션에서는 예시를 통해 트리거 조건이 어떻게 계산되는지, 그리고 다양한 시나리오에서 받을 수 있는 알림 수를 보여줘요.
트리거 조건 계산
복합 모니터가 가질 수 있는 상태(status)는 4가지이며, 그중 3가지는 알림 대상(alert-worthy)으로 간주돼요:
| 상태 | 알림 대상 | 심각도 |
|---|---|---|
Alert |
예 | 4 (가장 심각) |
Warn |
예 | 3 |
No Data |
예 | 2 |
Ok |
아니요 | 1 (가장 덜 심각) |
사용되는 Boolean 연산자(&&, ||, !)는 복합 모니터 상태의 알림 대상 여부에 대해 작동해요.
A && B가 알림 대상이면, 결과는 A와 B 중 가장 덜 심각한 상태예요.A || B가 알림 대상이면, 결과는 A와 B 중 가장 심각한 상태예요.- A가
No Data이면!A는No Data예요. - A가 알림 대상이면
!A는OK예요. - A가 알림 대상이 아니면
!A는Alert예요.
두 개의 개별 모니터 A와 B를 사용하는 복합 모니터를 생각해볼게요. 다음 표는 트리거 조건(&& 또는 ||)과 개별 모니터의 다양한 상태(알림 대상 여부는 T 또는 F로 표시)에 따른 복합 모니터의 결과 상태를 보여줘요.
| 모니터 A | 모니터 B | 조건 | Notify No Data | 복합 상태 | 알림 트리거됨? |
|---|---|---|---|---|---|
| Alert (T) | Warn (T) | A && B |
Warn (T) | 예 | |
| Alert (T) | Warn (T) | `A | B` | ||
| Alert (T) | Ok (F) | A && B |
OK (F) | ||
| Alert (T) | Ok (F) | `A | B` | ||
| Warn (T) | Ok (F) | A && B |
OK (F) | ||
| Warn (T) | Ok (F) | `A | B` | ||
| No Data (T) | Warn (T) | A && B |
True | No Data (T) | 예 |
| No Data (T) | Warn (T) | `A | B` | True | |
| No Data (T) | Warn (T) | A && B |
False | 이전 상태 | |
| No Data (T) | Warn (T) | `A | B` | False | |
| No Data (T) | OK (F) | A && B |
False | OK (F) | |
| No Data (T) | OK (F) | `A | B` | False | |
| No Data (T) | OK (F) | A && B |
True | OK (F) | |
| No Data (T) | OK (F) | `A | B` | True | |
| No Data (T) | No Data (T) | A && B |
True | No Data (T) | 예 |
| No Data (T) | No Data (T) | `A | B` | True |
참고: 복합 모니터의 notify_no_data가 false이고, 하위 모니터들의 평가 결과가 복합 모니터에 대해 No Data 상태로 끝나야 하는 경우, 복합 모니터는 대신 마지막으로 알려진 상태(last known state)를 사용해요.
복합 모니터와 다운타임
복합 모니터와 그 개별 모니터는 서로 독립적이에요.
복합 모니터에 다운타임 설정
조건이 A || B인 두 개의 개별 모니터로 구성된 복합 모니터 C를 생각해볼게요. 복합 모니터에 다운타임을 만들면 C의 알림만 억제돼요.
모니터 A나 모니터 B가 각자의 모니터 구성에서 서비스나 팀에 알리도록 되어 있다면, 복합 모니터 C에 대한 다운타임은 A나 B로 인한 알림을 음소거하지 않아요. A나 B의 알림을 음소거하려면 그 모니터들에 다운타임을 설정하세요.
복합 모니터에 사용된 개별 모니터에 다운타임 설정
복합 모니터 내에서 사용되는 개별 모니터 A에 다운타임을 만들어도 복합 모니터는 음소거되지 않아요.
예를 들어, 다운타임이 모니터 A, 특히 그 env:staging 그룹을 음소거한다고 해볼게요. env:staging 그룹이 알림 대상 상태에 도달하면, 개별 모니터에서 오는 알림은 억제되지만 복합 모니터는 알림을 보내요.
알림 수
받는 알림 수는 개별 모니터의 알림 유형에 따라 달라져요. 모든 개별 모니터가 단순 알림이면 복합 모니터도 단순 알림 유형이에요. 복합 모니터는 A와 B의 쿼리가 동시에 모두 true일 때 단일 알림을 트리거해요.
개별 모니터 중 하나라도 다중 알림이면 복합 모니터도 다중 알림이에요. 한 번에 얼마나 많은 알림을 보내는지는 복합 모니터가 다중 알림 모니터를 하나 사용하는지 여러 개 사용하는지에 따라 달라져요.
공통 보고 소스
여러 다중 알림 모니터를 사용하는 복합 모니터는 개별 모니터들의 *공통 보고 소스(common reporting sources)*만 고려해요.
다중 알림 예시
모니터 A와 B가 다중 알림이고 호스트로 그룹화되어 있다고 가정해볼게요.
host:web01부터host:web05까지의 호스트가 모니터A에 보고해요.host:web04부터host:web09까지의 호스트가 모니터B에 보고해요.
복합 모니터는 공통 소스(web04와 web05)만 고려해요. 하나의 평가 주기에서 최대 두 개의 알림을 받을 수 있어요.
그룹 이름이 다른 공통 그룹 값
복합 모니터는 태그 키가 아니라 태그 값(web04)만 봐요. 위 예시에 service로 그룹화되고 단일 보고 소스 service:web04를 가진 다중 알림 모니터 C가 포함된다면, 복합 모니터는 web04를 A, B, C 사이의 유일한 공통 보고 소스로 간주해요.
두 개 이상 차원으로 그룹화된 모니터
두 개 이상의 태그로 분할된 다중 알림 모니터의 경우, 모니터 그룹은 태그의 전체 조합에 해당해요. 예를 들어 모니터 1이 device,host별 다중 알림이고 모니터 2가 host별 다중 알림이라면, 복합 모니터가 모니터 1과 모니터 2를 결합할 수 있어요.
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/composite/multi-alert-1.f7e29100554f87892d626f72a747db99.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/composite/multi-alert-1.f7e29100554f87892d626f72a747db99.png?auto=format&fit=max&w=850&dpr=2 2x" alt="writing notification" /%}
하지만 host,url별 다중 알림인 모니터 3을 생각해볼게요. 그룹화가 너무 다르기 때문에 모니터 1과 모니터 3은 복합 결과를 만들지 못할 수 있어요:
{% image source="https://docs.dd-static.net/images/monitors/monitor_types/composite/multi-alert-2.5338362b20464587434a54e24fc65c1a.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/monitors/monitor_types/composite/multi-alert-2.5338362b20464587434a54e24fc65c1a.png?auto=format&fit=max&w=850&dpr=2 2x" alt="writing notification" /%}
더 알아보기 (Learn more)
추가로 도움이 되는 문서, 링크, 아티클: