Amazon CloudWatch 알림
Amazon CloudWatch 알림 (Amazon CloudWatch alerting)
Amazon CloudWatch 데이터 소스는 Grafana Alerting을 지원해요. CloudWatch 메트릭과 CloudWatch Logs에 알림 규칙을 만들 수 있어, 메트릭이 임계값을 넘거나 로그 쿼리가 알림 조건에 맞는 값을 반환하면 Grafana가 알려줘요. 이는 Grafana가 평가하는 Grafana Alerting이며, CloudWatch 알람(alarms)과는 달라요. 기존 CloudWatch 알람의 히스토리를 시각화하려면 Amazon CloudWatch annotations 문서를 참고하세요.
출처: 문서
본문
시작하기 전에
- 구성된 Amazon CloudWatch 데이터 소스.
- Grafana에서 알림 규칙을 만들 권한.
- Grafana Alerting 개념에 대한 이해.
알림용 지원 쿼리 유형
알림 규칙은 Grafana가 임계값으로 평가할 수 있는 숫자 데이터를 반환하는 쿼리를 요구해요. CloudWatch는 다음 쿼리 유형의 알림을 지원해요:
| Query type | Use case | Notes |
|---|---|---|
| Metrics | CloudWatch 메트릭의 임계값 기반 알림 | 시계열 데이터 반환; 알림에 가장 적합. |
| Logs | 로그 패턴·오류 수·임계값 알림 | 로그를 숫자 값으로 집계하려면 stats 명령 사용. |
Note:
queryA * 2같은 다른 쿼리를 참조하는 metric math 표현식으로는 알림 규칙을 만들 수 없어요. 알림 쿼리에서 메트릭을 직접 정의하세요.
알림 규칙 만들기
- Alerting > Alert rules로 이동해요.
- New alert rule을 클릭해요.
- 알림 규칙 이름을 입력해요.
- Define query and alert condition 섹션에서:
- Amazon CloudWatch 데이터 소스를 선택해요.
CPUUtilization용 Metrics 쿼리나stats명령을 사용하는 Logs 쿼리 같은 쿼리를 구성해요.- 쿼리가 여러 시리즈를 반환하면 Reduce 표현식을 추가해요.
- 알림 조건을 정의하는 Threshold 표현식을 추가해요.
- Set evaluation behavior 섹션을 구성해요:
- 폴더와 평가 그룹을 선택하거나 만들어요.
- 평가 간격을 설정해요.
- pending 기간을 설정해요.
- 알림에 컨텍스트를 제공하도록 라벨과 어노테이션을 추가해요.
- Save rule을 클릭해요.
자세한 절차는 "Create a Grafana-managed alert rule" 문서를 참고하세요.
예제: 메트릭 임계값 알림
이 예제는 평균 EC2 CPU 사용률이 80%를 초과하면 발동해요:
- 새 알림 규칙을 만들어요.
- 쿼리를 구성해요: Namespace
AWS/EC2, Metric nameCPUUtilization, StatisticAverage, DimensionsInstanceId. - 표현식을 추가해요: Reduce: Last(가장 최근 데이터 포인트), Threshold: Is above 80.
- 평가를 1분마다, pending 기간 5분으로 설정해요.
- 규칙을 저장해요.
예제: 로그 오류 수 알림
이 예제는 Exception을 포함한 로그 항목 수가 임계값을 초과하면 알림해요. CloudWatch Logs 알림은 stats 명령으로 만들 수 있는 숫자 데이터를 반환하는 쿼리를 요구해요:
- 새 알림 규칙을 만들어요.
- 쿼리를 구성해요:
- 쿼리 모드로 CloudWatch Logs를 선택해요.
- 쿼리할 리전과 로그 그룹을 선택해요.
- 다음 쿼리를 입력해요:
filter @message like /Exception/
| stats count(*) as exceptionCount by bin(5m)
- 표현식을 추가해요: Reduce: Max(기간 중 최고 개수), Threshold: Is above 10.
- 평가를 5분마다로 설정해요.
- 규칙을 저장해요.
Note: "input data must be a wide series but got ..." 같은 오류가 발생하면 쿼리가 시계열 패널에서 렌더링할 수 있는 숫자 데이터를 반환하는지 확인하세요.
알림 평가 중 CloudWatch Logs 타임아웃
CloudWatch Logs 쿼리에 대해 Grafana는 쿼리가 완료되거나 타임아웃에 도달할 때까지 AWS를 폴링해요. 알림 평가 중에는 Grafana 구성 파일에 정의된 타임아웃이 데이터 소스의 Query Result Timeout 설정보다 우선 적용돼요. 로그 쿼리가 끝날 수 있도록 구성 타임아웃을 충분히 높게 설정하세요.
모범 사례
알림 전 쿼리 테스트: 알림을 만들기 전에 쿼리가 숫자 데이터를 반환하는지 확인해요: Explore로 이동 → Amazon CloudWatch 데이터 소스 선택 → 계획한 쿼리 실행 → 결과가 임계값 평가에 적합한 숫자인지 확인.
여러 시리즈 줄이기: 쿼리가 여러 시계열을 반환하면 Reduce 표현식으로 Last, Mean, Max, Min, Sum으로 단일 값에 집계해요.
no data 조건 처리: Configure no data and error handling 아래에서 데이터가 반환되지 않을 때 규칙이 어떻게 동작할지 구성해요. 누락 데이터를 문제로 취급할지에 따라 No Data, Alerting, 또는 OK를 선택해요.
알림 문제 해결
알림이 발동하지 않음:
- Explore에서 쿼리가 숫자 데이터를 반환하는지 확인해요.
- 평가 간격이 데이터를 사용 가능하게 할 충분한 시간을 허용하는지 확인해요.
- Alerting UI에서 알림 규칙의 건강 상태와 오류 메시지를 검토해요.
로그 쿼리 알림 타임아웃:
- 알림 평가 중 우선 적용되는 Grafana 구성 파일 타임아웃을 늘려요.
- 쿼리가 스캔하는 데이터 양을 줄이려면 시간 범위를 좁히거나 필터를 추가해요.
자세한 도움은 "Troubleshoot Amazon CloudWatch" 문서를 참고하세요.