본 포스팅은 인프런 데브원영님의 [아파치 카프카 애플리케이션 프로그래밍]의 강의를 수강 후 정리하는 글입니다.
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
데브원영 DVWY | 실전 환경에서 사용하는 아파치 카프카 애플리케이션 프로그래밍 지식들을 모았습니다! 데이터 파이프라인을 구축하는데 핵심이 되는 아파치 카프카의 각종 기능들을 살펴보고
www.inflearn.com
1. 멀티스레드 컨슈머
n개의 스레드를 가진 1개의 프로세스를 운영하거나 1개의 스레드를 가진 프로세스 n개를 운영할 수 있음
배포 자동화가 잘 되어있다면 1개의 스레드를 가진 n개의 프로세스로 운영하는 것이 좋음
2. 컨슈머 랙
2-1. 컨슈머 랙 소개
컨슈머 랙: 파티션의 최신 오프셋과 컨슈머 오프셋 간의 차이
컨슈머가 동작하는지 여부를 확인할 수 있기 때문에 필수적으로 모니터링해야 하는 지표
2-2. 컨슈머 랙 모니터링
컨슈머 랙을 모니터링함으로써 컨슈머의 장애를 확인할 수 있고 파티션 개수를 정하는 데에 참고 가능
파티션 개수와 컨슈머 개수를 늘려서 병렬처리량을 늘리면 지연을 줄일 수 있음
2-3. 컨슈머 랙을 확인하는 방법 3가지
- 카프카 명령어 사용
bin/kafka-consumer-groups.sh --bootstrap-server 172.20.218.223:9092 \
--group my-group --describe
카프카 명령어를 통해 컨슈머랙을 확인하는 방법은 일회성에 그친다.
지표를 지속적으로 기록하고 모니터링하기에는 부족하여 테스트용 카프카에서 주로 사용
- metrics() 메서드 사용
records-lag-max, records-lag, records-lag-avg 3가지 지표 확인 가능
metrics() 메서드 사용의 단점
1. 컨슈머가 정상 동작할 경우에만 확인 가능
2. 모든 컨슈머 애플리케이션에 컨슈머 랙 모니터링 코드를 중복해서 작성
3. 컨슈머 랙을 모니터링하는 코드를 추가할 수 없는 카프카 서드 파티 애플리케이션의 컨슈머 랙 모니터링이 불가능
ex) logstash, fluentd
외부 모니터링 툴 사용
컨슈머 랙을 모니터링하는 가장 최선의 방법
컨슈머 랙 모니터링만을 위한 툴로 오픈소스로 공개되어 있는 버로우(Burrow)가 있음
3. 버로우
깃헙 링크: https://github.com/linkedin/Burrow
3-1. 카프카 버로우
링크드인에서 개발하여 오픈소스로 공개한 컨슈머 랙 체크 툴
REST API 통해 컨슈머 그룹 별로 컨슈머 랙을 확인할 수 있음
모니터링 툴들은 클러스터와 연동되어 데이터를 활용하는 프로듀서나 컨슈머의 동작에 영향을 미치지 않음
3-2. REST API
Request | Method | URL Format |
Healthcheck | GET | /burrow/admin |
List Clusters | GET | /v3/kafka |
Kafka Cluster Detail | GET | /v3/kafka/(cluster) |
List Consumers | GET | /v3/kafka/(cluster)/consumer |
List Cluster Topics | GET | /v3/kafka/(cluster)/topic |
Get Consumer Detail | GET | /v3/kafka/(cluster)/consumer/(group) |
Consumer Group Status | GET | /v3/kafka/(cluster)/consumer/(group)/status /v3/kafka/(cluster)/consumer/(group)/lag |
Remove Consumer Group | DELETE | /v3/kafka/(cluster)/consumer/(group) |
3-3. 컨슈머 랙 이슈 판별
컨슈머와 파티션의 상태를 단순히 컨슈머 랙의 임계치로 나타내지 않았음
버로우에서는 임계치가 아닌 슬라이딩 윈도우 계산을 통해 문제가 생긴 파티션과 컨슈머의 상태를 표현
Evaluation: 컨슈머 랙의 상태를 표현
- 정상적인 경우
- 컨슈머 처리량 이슈
이유: 컨슈머의 데이터 처리량이 프로듀서가 보내는 데이터양에 비해 적음
파티션: OK
컨슈머: WARNING
- 컨슈머 이슈
컨슈머 오프셋이 일정한 것으로 보아 커밋이 일어나지않는 걸로 컨슈머에 이슈가 있음을 확인
파티션: STALLED
컨슈머: ERROR
3-4. 컨슈머 랙 모니터링 아키텍처
- 버로우
- 텔레그래프
- 엘라스틱서치
- 그라파나
'Kafka' 카테고리의 다른 글
[Apache Kafka] 8. 카프카 스트림즈(1) - KStream,KTable,GlobalKTable (0) | 2024.10.29 |
---|---|
[Apache Kafka] 7. 멱등성 프로듀서, 트랜잭션 프로듀서와 컨슈머 (0) | 2024.10.28 |
[Apache Kafka] 6. 카프카 컨슈머 애플리케이션 개발(1) (3) | 2024.10.25 |
[Apache Kafka] 5. 카프카 프로듀서 애플리케이션 개발 (0) | 2024.10.23 |
[Apache Kafka] 4. 아파치 카프카 CLI 활용(4) - CLI 추가 참고사항 (0) | 2024.10.11 |