From a513408c640484038df20de38e1d82ca4da33997 Mon Sep 17 00:00:00 2001 From: Sergey Antropoff Date: Wed, 10 Sep 2025 20:10:33 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=82=D0=BE=D0=BF=D0=B8=D0=BA=D0=B0=20Kafka=20=D1=81?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=BE=D0=B9?= =?UTF-8?q?=20=D1=80=D0=B5=D1=82=D0=B5=D0=BD=D1=88=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена переменная KAFKA_TOPIC_RETENTION_HOURS в env.example (по умолчанию 12 часов) - Создана команда kafka-create-topic в Makefile для создания топика с ретеншном - Интегрировано автоматическое создание топика в команду setup - Команда использует переменные из .env файла для настройки топика - Добавлена проверка существования переменных окружения - Автор: Сергей Антропов, сайт: https://devops.org.ru --- Makefile | 25 ++++++++++++++++++++++++- env.example | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 567c96d..5a1962f 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ PROJECT_NAME := sensus-infra COMPOSE_FILE := docker-compose.yml .PHONY: help setup up down restart status logs clean ps -.PHONY: kafka-topics kafka-ui postgres-cli clickhouse-cli +.PHONY: kafka-topics kafka-create-topic kafka-ui postgres-cli clickhouse-cli .PHONY: health-check backup restore ssl-generate ssl-clean ssl-info .PHONY: docker-install docker-update docker-compose-install docker-compose-update docker-check @@ -38,6 +38,8 @@ setup: ## Первоначальная настройка инфраструкт @echo "⏳ Ожидание готовности сервисов..." @sleep 30 @$(MAKE) health-check + @echo "📝 Создание топика Kafka..." + @$(MAKE) kafka-create-topic @echo "✅ Инфраструктура готова к работе!" # ============================================================================= @@ -185,6 +187,27 @@ kafka-topics: ## Показать список топиков Kafka @echo "📋 Список топиков Kafka:" docker exec sensus-kafka kafka-topics --bootstrap-server localhost:9092 --list +kafka-create-topic: ## Создать топик Kafka с настройкой ретеншна + @echo "📝 Создание топика Kafka..." + @if [ -z "$$KAFKA_TOPIC" ]; then \ + echo "❌ Переменная KAFKA_TOPIC не задана в .env файле"; \ + exit 1; \ + fi + @if [ -z "$$KAFKA_TOPIC_RETENTION_HOURS" ]; then \ + echo "❌ Переменная KAFKA_TOPIC_RETENTION_HOURS не задана в .env файле"; \ + exit 1; \ + fi + @echo "🔧 Создание топика: $$KAFKA_TOPIC с ретеншном: $$KAFKA_TOPIC_RETENTION_HOURS часов" + @docker exec sensus-kafka kafka-topics \ + --bootstrap-server localhost:9092 \ + --create \ + --topic $$KAFKA_TOPIC \ + --partitions $$KAFKA_NUM_PARTITIONS \ + --replication-factor $$KAFKA_DEFAULT_REPLICATION_FACTOR \ + --config retention.ms=$$(($$KAFKA_TOPIC_RETENTION_HOURS * 3600000)) \ + --if-not-exists || echo "⚠️ Топик уже существует или произошла ошибка" + @echo "✅ Топик $$KAFKA_TOPIC создан с ретеншном $$KAFKA_TOPIC_RETENTION_HOURS часов" + kafka-ui: ## Открыть Kafka UI в браузере @echo "🌐 Kafka UI доступен по адресу: http://localhost:8080" diff --git a/env.example b/env.example index 7936792..e06e588 100644 --- a/env.example +++ b/env.example @@ -40,6 +40,7 @@ KAFKA_UI_USER_ROLES=ADMIN # Kafka топики KAFKA_TOPIC=sensus.metrics +KAFKA_TOPIC_RETENTION_HOURS=12 KAFKA_GROUP_ID=sensus-worker KAFKA_CLIENT_ID=sensus-worker