0Pricing
Advanced Spring Boot 4: Event-Driven Architecture (Kafka) · Урок

Метрики Kafka (JMX) и проверки состояния

Изучите основные метрики брокеров и клиентов Kafka, доступные через JMX, а также способы проверки состояния приложений Spring Boot.

«Метрики Kafka (JMX) и проверки состояния» — бесплатный урок Advanced Spring Boot 4: Event-Driven Architecture (Kafka) на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Advanced Spring Boot 4: Event-Driven Architecture (Kafka), и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Advanced Spring Boot 4: Event-Driven Architecture (Kafka) содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why Monitor Kafka & Apps?

In event-driven systems with Kafka, understanding the health and performance of your brokers and applications is crucial. Monitoring helps you detect issues early, optimize resource usage, and ensure reliable message processing.

Without proper monitoring, you'd be flying blind, unaware of potential bottlenecks, outages, or data loss risks. It's like driving a car without a dashboard!

Introducing JMX for Java Apps

JMX stands for Java Management Extensions. It's a standard technology for monitoring and managing Java applications. Kafka, being a Java application, exposes a wealth of operational data through JMX.

JMX uses objects called MBeans (Managed Beans) to expose attributes (data) and operations (actions) of an application. These MBeans provide insights into everything from memory usage to Kafka-specific metrics.

Key Kafka Broker JMX Metrics

Kafka brokers expose numerous JMX metrics that are vital for monitoring. Here are a few examples:

  • MessagesInPerSec: The rate of messages produced to topics on the broker.
  • BytesInPerSec/BytesOutPerSec: Network throughput for incoming/outgoing data.
  • RequestPerSec: Rate of produce, fetch, or other requests handled by the broker.
  • ActiveControllerCount: Indicates which broker is the cluster controller (should be 1).

Monitoring these helps you understand load, network usage, and cluster stability.

Accessing JMX Metrics

You can access JMX metrics in several ways:

  • JConsole/JVisualVM: GUI tools bundled with the JDK that connect to running Java processes.
  • Prometheus JMX Exporter: A popular agent that scrapes JMX metrics and exposes them in a Prometheus-compatible format.
  • Programmatic Access: Using Java code to connect to the MBeanServer and query MBeans directly.

For large-scale monitoring, integrating with tools like Prometheus and Grafana is common, which we'll cover later!

Spring Boot Actuator Health

For Spring Boot applications, Actuator provides production-ready features, including powerful health check endpoints. The primary endpoint is /actuator/health.

This endpoint aggregates the health status of various components within your application, including database connections, disk space, and crucially, external dependencies like Kafka.

Enabling Actuator Endpoints

To expose Actuator endpoints, you need to add the spring-boot-starter-actuator dependency and configure your application.properties:

  • management.endpoints.web.exposure.include=*: Exposes all Actuator endpoints over HTTP.
  • management.endpoint.health.show-details=always: Shows full health details, not just UP/DOWN status.

This allows you to query http://localhost:8080/actuator/health (or your app's port) to see the aggregated health.

Building Custom Health Checks

While Actuator provides out-of-the-box health checks, you often need custom ones for specific application logic or unique external dependencies. For a Kafka-integrated app, a custom health check can verify active Kafka connectivity.

You can create a custom health check by implementing Spring Boot's HealthIndicator interface. This gives you precise control over what 'healthy' means for your application's Kafka integration.

Custom Kafka Health Check

This Spring Boot example demonstrates a custom HealthIndicator that checks if a KafkaTemplate bean is available, implying successful Kafka configuration and potential connectivity.

Dependencies: Add spring-boot-starter-web, spring-boot-starter-actuator, and spring-kafka to your project's dependencies.

application.properties:

  • spring.kafka.bootstrap-servers=localhost:9092
  • management.endpoints.web.exposure.include=*
  • management.endpoint.health.show-details=always

Run this application and visit http://localhost:8080/actuator/health to see its status, including the Kafka check.

package com.coddykit.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.context.annotation.Bean;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.beans.factory.annotation.Autowired;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    /**
     * Custom HealthIndicator to check Kafka connectivity.
     * It checks if a KafkaTemplate bean could be successfully created.
     * In a real application, consider using KafkaAdminClient
     * for more robust connectivity checks (e.g., listing topics).
     */
    @Bean
    public HealthIndicator kafkaConnectivityHealthIndicator(
            @Autowired(required = false) KafkaTemplate<String, String> kafkaTemplate) {
        return () -> {
            if (kafkaTemplate != null) {
                // If KafkaTemplate is available, assume Kafka is reachable.
                return Health.up()
                    .withDetail("service", "Kafka Broker")
                    .withDetail("status", "KafkaTemplate available")
                    .build();
            } else {
                // If KafkaTemplate is null, Kafka might not be configured or reachable.
                return Health.down()
                    .withDetail("service", "Kafka Broker")
                    .withDetail("error", "KafkaTemplate bean not found/failed to create")
                    .build();
            }
        };
    }
}

Understanding Health Endpoint

When you access /actuator/health, you'll see a JSON response. The top-level status field indicates the overall health (e.g., UP or DOWN).

Beneath that, the components field provides detailed status for each configured health indicator, including built-in ones (like disk space) and your custom Kafka check. You'll see the UP or DOWN status for each component along with any custom details you added.

Check Your Knowledge

Let's test your understanding of monitoring Kafka and Spring Boot applications.

Lesson Summary & Beyond

Great job! You've learned about the importance of monitoring, how JMX provides deep insights into Kafka brokers, and how Spring Boot Actuator enables robust health checks for your applications.

Specifically, you now understand how to expose Actuator endpoints and implement custom HealthIndicators to verify connectivity to critical services like Kafka.

Next, we'll explore integrating these metrics with powerful visualization tools like Prometheus and Grafana for comprehensive dashboards!

Часто задаваемые вопросы

Урок «Метрики Kafka (JMX) и проверки состояния» бесплатный?

Да — полный текст урока «Метрики Kafka (JMX) и проверки состояния» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Advanced Spring Boot 4: Event-Driven Architecture (Kafka), подпишись на CoddyKit PRO. Курс Advanced Spring Boot 4: Event-Driven Architecture (Kafka) содержит 4 уроков всего.

Чему я научусь в уроке «Метрики Kafka (JMX) и проверки состояния»?

Изучите основные метрики брокеров и клиентов Kafka, доступные через JMX, а также способы проверки состояния приложений Spring Boot. Ты практикуешь Advanced Spring Boot 4: Event-Driven Architecture (Kafka) с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Advanced Spring Boot 4: Event-Driven Architecture (Kafka)?

Предыдущий опыт не требуется. Advanced Spring Boot 4: Event-Driven Architecture (Kafka) на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Метрики Kafka (JMX) и проверки состояния»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Advanced Spring Boot 4: Event-Driven Architecture (Kafka)?

Да. Каждый урок Advanced Spring Boot 4: Event-Driven Architecture (Kafka) включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Метрики Kafka (JMX) и проверки состояния
  2. Интеграция с Prometheus и Grafana
  3. Распределённая трассировка с Sleuth и Zipkin
  4. Мониторинг отставания потребителей и настройка оповещений
← Назад к Advanced Spring Boot 4: Event-Driven Architecture (Kafka)