Комплексное решение для мониторинга 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)
# Клонируем репозиторий
git clone https://github.com/ZhikharevAl/kafka-monitoring.git
cd kafka-monitoring
# Запускаем все сервисы
docker-compose up -d
# Проверяем состояние сервисов
docker-compose ps| Сервис | URL | Логин/Пароль |
|---|---|---|
| Kafdrop (Kafka UI) | http://localhost:9001 | - |
| Grafana | http://localhost:3000 | admin/admin |
| Prometheus | http://localhost:9090 | - |
# Проверяем, что Kafka отвечает
kafka-topics --list --bootstrap-server localhost:9092
# Создаем тестовый топик
kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1flowchart LR
kafka[Kafka :9092] --> exporter[Kafka Exporter :9308]
exporter --> prometheus[Prometheus :9090]
exporter --> kafdrop[Kafdrop :9001]
prometheus --> grafana[Grafana :3000]
- Лаг потребителей: отслеживание задержек обработки сообщений
- Пропускная способность: скорость производителя/потребителя
- Распределение по партициям: балансировка нагрузки
- Состояние групп потребителей: активные участники и ребалансировка
- Состояние брокера: версии API, директории логов, время работы
В настройке включены предварительно настроенные дашборды для:
- Обзор 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:
- Нагрузочное тестирование - бенчмарки производительности
- Масштабирование потребителей - множественные экземпляры потребителей
- Восстановление после сбоев - тестирование устойчивости
- Пиковая нагрузка - обработка всплесков
- Мульти-топики - симуляция микросервисов
- Управление смещениями - контроль позиции потребителя
# Тест производительности производителя
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 .GitHub Actions workflow (.github/workflows/code-quality.yaml) автоматически:
- Проверяет консистентность файла
uv.lock - Запускает линтинг кода с помощью Ruff
- Проверяет форматирование кода
- Выполняет проверку типов с помощью 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 хуки
docs/check-list.md- Базовые тесты функциональности Kafkadocs/kafka-testing-guide.md- Продвинутые сценарии тестирования с мониторингом
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

