Skip to content

Комплексное решение для мониторинга Apache Kafka с Prometheus, Grafana и Kafdrop для разработки и тестирования.

Notifications You must be signed in to change notification settings

ZhikharevAl/kafka-monitoring

Repository files navigation

Мониторинг Kafka

Ask DeepWiki

Комплексное решение для мониторинга Apache Kafka с Prometheus, Grafana и Kafdrop для разработки и тестирования.

Возможности

  • Apache Kafka с режимом KRaft (без Zookeeper)
  • Kafdrop - веб-интерфейс для управления кластером Kafka
  • Prometheus - сбор и хранение метрик
  • Grafana - визуализация данных и дашборды
  • Kafka Exporter - экспорт метрик Kafka для Prometheus
  • Автоматизированное тестирование - комплексные тестовые сценарии
  • CI/CD Pipeline - GitHub Actions для контроля качества кода

Требования

  • Docker и Docker Compose
  • Python 3.13+ (для разработки)
  • UV менеджер пакетов (для зависимостей Python)

Быстрый старт

1. Запуск инфраструктуры

# Клонируем репозиторий
git clone https://github.com/ZhikharevAl/kafka-monitoring.git
cd kafka-monitoring

# Запускаем все сервисы
docker-compose up -d

# Проверяем состояние сервисов
docker-compose ps

2. Доступ к веб-интерфейсам

Сервис URL Логин/Пароль
Kafdrop (Kafka UI) http://localhost:9001 -
Grafana http://localhost:3000 admin/admin
Prometheus http://localhost:9090 -

3. Проверка установки

# Проверяем, что Kafka отвечает
kafka-topics --list --bootstrap-server localhost:9092

# Создаем тестовый топик
kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

Архитектура

flowchart LR
    kafka[Kafka :9092] --> exporter[Kafka Exporter :9308]
    exporter --> prometheus[Prometheus :9090]
    exporter --> kafdrop[Kafdrop :9001]
    prometheus --> grafana[Grafana :3000]
Loading

📊 Мониторинг

Доступные метрики

  • Лаг потребителей: отслеживание задержек обработки сообщений
  • Пропускная способность: скорость производителя/потребителя
  • Распределение по партициям: балансировка нагрузки
  • Состояние групп потребителей: активные участники и ребалансировка
  • Состояние брокера: версии API, директории логов, время работы

Дашборды Grafana

В настройке включены предварительно настроенные дашборды для:

  • Обзор Kafka
  • Группы потребителей
  • Детали топиков
  • Метрики брокера

grafana grafana

Тестирование

Базовые тесты Kafka

Выполните комплексный чек-лист тестирования:

# Следуйте тестовым сценариям в docs/check-list.md
kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

# Тест производителя
kafka-console-producer --topic test-topic --bootstrap-server localhost:9092

# Тест потребителя
kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092 --from-beginning

Продвинутые сценарии тестирования

Подробное руководство по тестированию доступно в docs/kafka-testing-guide.md:

  1. Нагрузочное тестирование - бенчмарки производительности
  2. Масштабирование потребителей - множественные экземпляры потребителей
  3. Восстановление после сбоев - тестирование устойчивости
  4. Пиковая нагрузка - обработка всплесков
  5. Мульти-топики - симуляция микросервисов
  6. Управление смещениями - контроль позиции потребителя

Тестирование производительности

# Тест производительности производителя
kafka-producer-perf-test --topic test-topic --num-records 10000 --record-size 1024 --throughput 1000 --producer-props bootstrap.servers=localhost:9092

# Тест производительности потребителя
kafka-consumer-perf-test --topic test-topic --bootstrap-server localhost:9092 --messages 10000 --threads 1

Разработка

Настройка среды разработки

# Установка UV (если еще не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Установка зависимостей
uv sync --dev

# Настройка pre-commit хуков
uv run pre-commit install

Контроль качества кода

В проекте используются автоматизированные проверки качества кода:

  • Ruff - линтинг и форматирование Python
  • Pyright - проверка типов
  • Pre-commit hooks - автоматические проверки перед коммитами
# Запуск линтинга
uvx ruff check .

# Запуск форматирования
uvx ruff format .

# Проверка типов
uv run pyright .

CI/CD

GitHub Actions workflow (.github/workflows/code-quality.yaml) автоматически:

  1. Проверяет консистентность файла uv.lock
  2. Запускает линтинг кода с помощью Ruff
  3. Проверяет форматирование кода
  4. Выполняет проверку типов с помощью Pyright

📁 Структура проекта

.
├── .github/
│   ├── actions/          # Переиспользуемые GitHub Actions
│   └── workflows/        # CI/CD workflow'ы
├── docs/
│   ├── check-list.md     # Базовый чек-лист тестирования Kafka
│   └── kafka-testing-guide.md  # Продвинутые сценарии тестирования
├── prometheus/
│   └── prometheus.yml    # Конфигурация Prometheus
├── docker-compose.yaml   # Основная настройка инфраструктуры
├── pyproject.toml       # Конфигурация Python проекта
└── .pre-commit-config.yaml  # Pre-commit хуки

📚 Документация

Устранение неполадок

Частые проблемы

Kafka не запускается:

# Проверяем логи
docker-compose logs kafka

# Перезапускаем сервисы
docker-compose restart kafka

Конфликты портов:

# Проверяем, что использует порты
lsof -i :9092
lsof -i :3000
lsof -i :9001

Лаг потребителей не уменьшается:

  • Проверьте, что потребитель работает: kafka-consumer-groups --list --bootstrap-server localhost:9092
  • Проверьте состояние группы потребителей: kafka-consumer-groups --describe --group <group-name> --bootstrap-server localhost:9092

Благодарности

  • Apache Kafka - платформа распределенного стриминга
  • Confluent - Docker образы Kafka
  • Prometheus - система мониторинга
  • Grafana - платформа визуализации
  • Kafdrop - веб-интерфейс для Kafka

About

Комплексное решение для мониторинга Apache Kafka с Prometheus, Grafana и Kafdrop для разработки и тестирования.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published