1. Kinesis Data Streams의 Consumer 모니터링 소개
- AWS Kinesis Data Streams는 실시간 데이터 스트리밍 처리를 위한 강력한 서비스입니다.
- 효율적인 데이터 처리를 위해서는 Consumer의 성능을 지속적으로 모니터링하고 필요에 따라 스케일링하는 것이 중요합니다.
- 이 글에서는 Consumer의 처리 상태를 모니터링하는 핵심 지표인 GetRecords.IteratorAgeMilliseconds를 중심으로 살펴보겠습니다.
2. GetRecords.IteratorAgeMilliseconds 지표 이해하기
2.1 지표의 정의
- GetRecords.IteratorAgeMilliseconds는 CloudWatch에서 제공하는 중요한 모니터링 지표입니다.
- 이 지표는 다음을 측정합니다:
- 현재 시간과 GetRecords 호출에서 마지막으로 읽은 레코드가 스트림에 작성된 시간의 차이
- 밀리초(milliseconds) 단위로 측정
- Consumer의 데이터 처리 진행 상황을 추적하는 핵심 지표
2.2 지표 값의 의미
-
IteratorAge = 0
- Consumer가 스트림의 최신 데이터까지 모두 처리한 상태
- 실시간 처리가 원활하게 이루어지고 있음을 의미
- 이상적인 상태
-
IteratorAge > 0
- Consumer가 데이터를 충분히 빠르게 처리하지 못하고 있음
- 처리 지연이 발생하고 있음을 의미
- 스케일링이나 최적화가 필요할 수 있는 상태
3. Consumer 처리 지연 모니터링하기
3.1 CloudWatch 대시보드 설정
{
"metrics": [
[ "AWS/Kinesis", "GetRecords.IteratorAgeMilliseconds", "StreamName", "YOUR_STREAM_NAME" ]
],
"view": "timeSeries",
"period": 60,
"stat": "Average"
}
3.2 경보 설정 가이드라인
-
Warning 경보
- IteratorAge > 60000 (1분)
- 처리 지연이 시작되고 있음을 알림
-
Critical 경보
- IteratorAge > 300000 (5분)
- 심각한 처리 지연 상태를 알림
4. 처리 지연 해결 전략
4.1 Consumer 스케일링
-
Consumer 수 증가
- 샤드당 처리량 분산
- 병렬 처리 능력 향상
-
Auto Scaling 설정
- IteratorAge 기반 스케일링 규칙 설정
- 트래픽 변화에 자동 대응
4.2 처리 최적화
-
배치 크기 조정
- GetRecords 호출당 처리하는 레코드 수 최적화
- 처리 효율성 개선
-
처리 로직 개선
- 병목 구간 식별 및 개선
- 비동기 처리 활용