Ambari Kafka Metrics Reporter 참고 메모
Kafka 모니터링을 준비하면서 Ambari의 Kafka Metrics Sink 구현을 참고했습니다. 외부에서 지표를 조회하는 방법 외에, Kafka 프로세스에 리포터를 등록해 지표를 전달하는 구조를 살펴보기 위한 메모였습니다.
당시의 kafka.metrics.reporters 설정과 Ambari 의존성을 정리합니다. 현재 Kafka의 설정과 리포터 API는 버전에 따라 다르므로 구형 설정과 구분해야 합니다.
Ambari 리포터 구현
Ambari 2.4.2의 KafkaTimelineMetricsReporter 는 KafkaMetricsReporter를 구현하고 지표 전송을 담당하는 리포터를 시작·중지하는 구조입니다.
Kafka 프로세스 안에서 실행되는 플러그인이므로 사용할 JAR와 의존성을 실행 classpath에서 찾을 수 있어야 합니다. 설정에 클래스 이름만 적는 것으로 설치가 끝나는 것은 아닙니다.
당시 참고한 의존성
메모에 남긴 Maven 의존성은 다음과 같습니다.
<dependency>
<groupId>org.apache.ambari</groupId>
<artifactId>ambari-metrics-kafka-sink</artifactId>
<version>2.4.2.2.1</version>
</dependency>이는 당시 참고한 버전입니다. 실제 빌드에서는 해당 artifact를 제공하는 저장소와 대상 Kafka의 인터페이스가 맞는지 확인해야 합니다.
리포터 등록과 수집 주기
설정 기록에는 사용자 정의 리포터 클래스와 kafka.metrics.polling.interval.secs 항목이 있었습니다. 다음은 클래스 이름과 주기를 바꾼 예시입니다.
kafka.metrics.reporters=com.example.metrics.CustomReporter
kafka.metrics.polling.interval.secs=60리포터가 이 주기를 어떻게 사용하고, 어느 지표를 수집하고, 결과를 어디에 보내는지는 구현을 확인해야 합니다. API가 지원하는 설정과 사용자 정의 리포터가 추가로 읽는 설정도 구분할 필요가 있습니다.
수집 부하 확인
프로세스 안에서 지표를 보내더라도 수집과 전송 비용이 없어지는 것은 아닙니다. 지표 개수와 주기, 전송 실패 시 동작에 따라 Kafka 프로세스에도 영향을 줄 수 있습니다.
리포터를 선택할 때는 설정한 주기와 실제 수집·전송이 같은지, 전송 오류가 Kafka 프로세스에 영향을 주지 않는지도 함께 확인해야 합니다.