티스토리 뷰
Datadog에서 알람을 설정할 때 데이터가 누락되는 경우도 고려하는 것이 중요합니다. default zero 옵션은 데이터가 누락될 때 기본값인 0을 사용하도록 설정하여 알람을 더 정확하게 트리거할 수 있게 도와줍니다.
설정했던 알람
avg:trace.servlet.request{service:my-app-*, env:prd, resource_name:get_/api/users/*} by {resource_name}.rollup(avg, 60)
이 설정은 my-app- 서비스의 프로덕션 환경에서 /api/users로 시작하는 GET 요청의 평균 응답 시간을 resource_name별로 60초 간격으로 롤업(rollup)하여 모니터링하는 것을 의미합니다.
알게 된 점은
- 알람이 트리거 되는 시간은 조건이 충족되는 데이터가 들어온 시간에 결정됩니다. 즉, 메트릭 데이터가 들어오는 시간을 기준으로 트리거 됩니다.
- 시간 기준은 현재 시간이 아닌, 마지막으로 수집된 메트릭 데이터의 시간입니다. 즉, 요청이 끝난 시점을 기준으로 알람이 트리거 된다.
메트릭 데이터 누락 시 발생하는 문제
문제는 특정 시점 이후로 요청이 없어서 메트릭 데이터가 수집되지 않는 상황에서 발생했습니다. 가령 오후 6시에 평균 응답 시간이 임계값을 초과하여 알람가 트리거 되었는데, 그 이후로는 요청이 없어서 메트릭이 수집되지 않습니다. 이렇게 되면 알람이 계속 지속되는 문제가 생깁니다.
Default zero의 역할
Default zero를 사용하면, 메트릭 데이터가 누락된 시점의 값을 0으로 간주하여 알람 평가에 포함시키게 됩니다. 그래서 요청이 없어도, 해당 시점의 메트릭 값이 0으로 처리되어 알람 조건을 충족하지 않게 되고, 결과적으로 알람이 resolve 됩니다.
반면에 Default zero를 사용하지 않으면, 메트릭 데이터가 수집되지 않는 시점에 대해서는 알람 평가 자체가 이루어지지 않습니다. 그래서 알람 조건을 충족하는 상태가 지속되더라도, 새로운 데이터가 없으면 알람이 계속 울리게 되는 현상이 일어납니다.
default_zero를 적용.
default_zero(avg:trace.servlet.request{service:my-app-*, env:prd, resource_name:get_/api/users/*} by {resource_name}.rollup(avg, 60))
Default zero 함수를 사용하여 메트릭 데이터가 없는 시점의 값을 0으로 처리하도록 설정한 것을 볼 수 있습니다.
마무리
- Datadog 알람 설정 시 Default zero를 사용하면 메트릭 데이터 누락 시점의 값을 0으로 처리하여 알람 평가에 포함시킬 수 있다.
- Default zero를 사용하지 않으면 메트릭 데이터 누락 시 알람이 지속적으로 트리거 되는 문제가 발생할 수 있다.
참고
https://docs.datadoghq.com/ko/monitors/
https://docs.datadoghq.com/ko/monitors/notify/
- Total
- Today
- Yesterday
- JavaScript
- docker
- 베리 심플
- oracle
- elasticsearch
- maven
- k8s
- 오라클
- localtime
- mybatis config
- input
- Bash tab
- Mac
- Kotlin
- Spring Security
- jQuery
- springboot
- config-location
- mybatis
- window
- svn
- 북리뷰
- LocalDate
- Linux
- Spring
- Java
- intellij
- Github Status
- rocky
- LocalDateTime
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |