7.2 모니터링 시스템 구성
7.2.1 애플리케이션으로서 카프카의 로그 관리와 분석
- 카프카는 발생하는 모든 로그를 브로커의 로컬 디스크에 기록하고 있다.
- 카프카는 로그 관리를 위해 자바 기반 로깅 유틸리티인 아파치 log4j를 이용한다.
로그 레벨 |
설명 |
TRACE |
DEBUG보다 상세 로그를 기록 |
DEBUG |
내부 애플리케이션 상황에 대해 기록 |
INFO |
로그 레벨의 기본값이며 일반적인 정보 수준의 로그를 기록 |
WARN |
INFO 로그 레벨보다 높은 개념으로 경고 수준의 로그를 기록 |
ERROR |
경고 수준을 넘어 런타임 에러나 예상하지 못한 에러 로그를 기록 |
FINAL |
로그 레벨 중 최종 단계로 심각한 애플리케이션 중지 등의 로그를 기록 |
- 카프카에서 제공하는 log4j 설정 변경을 통해 관리자는 언제든 로그 레벨을 변경할 수 있다.
- 리눅스 명령어를 통해 log4j.properties 파일을 편집하고 브로커를 재시작하면 된다.
# 예시: 전체 Kafka 패키지 로깅 레벨을 DEBUG로 변경
log4j.logger.kafka=DEBUG
log4j.logger.org.apache.kafka=DEBUG
- 주의할 점
- 로그 레벨을 INFO에서 DEBUG, TRACE 등으로 낮출 경우 생각보다 많은 로그가 기록된다.
- 모든 로그는 로컬 디스크에 기록되기에 브로커 여유 디스크 공간이 충분한지 확인해야 한다.
- 카프카가 각 로그 파일들에 어떤 정보를 기록하는지는 다음과 같다.
로그 파일 이름 |
설명 |
server.log |
브로커 설정 정보와 정보성 로그 등을 기록. 브로커 재시작 시 브로커 옵션 정보가 기록됨 |
state-change.log |
컨트롤러로부터 받은 정보를 기록 |
kafka-request.log |
클라이언트로부터 받은 정보를 기록 |
log-cleaner.log |
로그 컴팩션 동작들을 기록 |
controller.log |
컨트롤러 관련 정보를 기록 |
kafka-authorizer.log |
인증과 관련된 정보를 기록 |
7.2.2 JMX를 이용한 카프카 메트릭 모니터링
- JMX (Java Management eXtensions)
- 자바로 만든 애플리케이션을 모니터링하기 위한 도구를 제공하는 자바 API
- 카프카 관리자는 JMX로 주요 메트릭들을 그래프 등으로 한 눈에 확인할 수 있다.
- 카프카는 JMX를 통해 브로커나 클러스터의 상태, 주요 메트릭 정보를 MBean 형태로 제공한다.\
MBean은 JMX 환경에서 관리 가능한 리소스(예: 메모리, 스레드, 설정값 등)를 외부에서 조회(getter), 설정(setter), 제어(메서드 실행) 할 수 있게 만드는 일종의 표준 인터페이스와 객체
카프카 JMX 설정 방법
- 카프카 브로커 실행 환경에 JMX를 활성화하려면, 실행 스크립트에서 환경변수
JMX_PORT
를 지정한다.
- 도커 환경이나 systemd 서비스 환경에서는 환경 변수만 주입하면 된다
- JMX Exporter 같은 에이전트를 브로커에 붙여서 메트릭을 Prometheus 등 외부 모니터링 시스템으로 연동할 수 있다.
- Prometheus는 JMX Exporter로부터 메트릭을 수집해서, Grafana 등 시각화 도구로 모니터링할 수 있게 해준다.
JMX 모니터링 지표
- 카프카 모니터링을 위해 JMX에서 제공하는 지표는 굉장이 많고 중요한 지표들은 대부분 대시보드에 추가되어 있다.
- 다음 컨플루언트 JMX 공식 가이드 문서를 참고해 지표를 확인하고 추가해가기를 권장한다.
- https://docs.confluent.io/platform/current/kafka/monitoring.html
7.2.3 카프카 익스포터
- 카프카 모니터링엔 JMX 메트릭 등도 중요하지만 컨슈머의 LAG을 모니터링하는 것이 가장 중요하다.
- 컨슈머 LAG - 프로듀서가 토픽의 특정 파티션에 기록한 가장 최신 오프셋(offset)과 컨슈머가 마지막으로 읽은 오프셋 간의 차이를 의미
- 카프카 익스포터(Kafka Exporter)는 카프카 내부 메트릭, 특히 컨슈머 LAG와 관련된 정보를 외부 모니터링 시스템(Prometheus 등)에서 수집할 수 있도록 HTTP로 메트릭을 노출한다
- https://github.com/danielqsj/kafka_exporter
- 프로메테우스와 그라파나 조합으로 모니터링이 가능
- 카프카 익스포터 설치 순서
- 카프카 익스포터 다운로드
- 카프카 익스포터 실행
- 프로메테우스 환경 설정 파일에서 카프카 익스포터 추가
- 그라파나 대시보드에 추가
- 카프카 대시보드를 구성하면 총 5개 그래프를 확인할 수 있다.
- Message in per second - 초 단위 메시지 유입
- Message in per minute - 분 단위 메시지 유입
- Lag by Consumer Group - 컨슈머 그룹의 LAG 상태
- Message consume per minute - 분 단위 얼마나 컨슘되는지
- Partitions per topic - 토픽별 파티션 수
- 모니터링 운영 팁
- 일주일 이상 메트릭을 수집한 뒤 지표들을 분석
- 값이 변하지 않을 수도 높이 튈 때도 있을 것
- 일주일 기준 피크값으로 임계치를 설정해 알림을 받을 수 있게 설정
- 일주일간 주기적인 모니터링으로 알림 빈도 수와 임계치를 재조정한다.