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