본문 바로가기

Kafka

[Spring + Kafka] 간단 성능 모니터링

환경: Spring Boot Project 2.7.5 + Spring-Kafka 2.8.10

코드를 사용한 Metrics 확인

@Bean
public ApplicationRunner runner(KafkaTemplate<String, String> kafkaTemplate,
                                KafkaListenerEndpointRegistry registry) {
    return args -> {
        Map<MetricName, ? extends Metric> producerMetrics = kafkaTemplate.metrics();
        for (MetricName metricName : producerMetrics.keySet()) {
            log.info("metricName = {}, value = {}", metricName.description(), producerMetrics.get(metricName).metricValue());
        }

        MessageListenerContainer listenerContainer = registry.getListenerContainer("test-event-id");
        Map<String, Map<MetricName, ? extends Metric>> consumerMetrics = listenerContainer.metrics();
        for (String key : consumerMetrics.keySet()) {
            for (MetricName metricName : consumerMetrics.get(key).keySet()) {
                log.info("key = {}, metricName = {}, value = {}", key, metricName.description(), consumerMetrics.get(key).get(metricName).metricValue());
            }
        }
    };

}
  • kafkaTemplate.metrics()로 Producer Metrics를 조회할 수 있다.
  • kafkaListenerEndpointRegistry에 등록된 id로 listenerContainer를 가져오고 container에서 Consumer Metrics()를 조회할 수 있다.
  • 다음과 같은 실행 결과를 확인할 수 있다.

 

Actuator를 사용한 Metrics 확인

build.gradle에 다음과 같은 dependency를 추가한다.

implementation 'org.springframework.boot:spring-boot-starter-actuator'


application.yml에 다음과 같은 설정 정보를 추가한다.

management:
  endpoints:
    web:
      exposure:
        include: "*"


Application을 실행하고 GET http://localhost:8080/actuator/metrics을 호출하면 Kafka Prdocuer/Consumer metric 목록을 조회할 수 있다.


확인하고 싶은 값을 선택하여 Path에 추가한 뒤 호출하면, 해당 값의 정보를 확인할 수 있다.
GET http://localhost:8082/actuator/metrics/kafka.consumer.successful.authentication.rate