feat(infra): стенд целиком — Kafka, Airflow 3, Superset и мониторинг одной командой

Зачем: рядом с кластером ClickHouse не хватало остальной платформы, а
поднимать её по кускам — значит каждый раз вспоминать порядок. Теперь
`make up` даёт стенд целиком, а `make smoke` честно отвечает, работает он
или нет.

Что:
- Kafka в режиме KRaft (без ZooKeeper), Postgres под метаданные, Airflow
  3.3 четырьмя сервисами и Superset 6.1 с драйверами ClickHouse;
- мониторинг: Prometheus снимает метрики с обеих нод ClickHouse и keeper,
  Grafana получает подготовленный источник данных;
- подключение Airflow ведёт на ноду 1, подключение Superset — на ноду 2:
  ловушка правильных ошибок, забытый `ON CLUSTER` виден в дашборде сам;
- `scripts/stand-smoke.sh` — сквозная проверка из 24 пунктов: топик в
  Kafka, цели Prometheus, запуск примера DAG через API Airflow, проверка
  подключения Superset и расход памяти против порога 3,4 ГБ;
- `make config-test` — статические ворота: Compose, синтаксис Bash и
  Python, стражи README; стражи smoke проверяют, что отчёт краснеет на
  сломанном стенде и зеленеет после восстановления;
- решения записаны в `docs/adr/0001-stand-services.md`, состав стенда и
  порядок работы — в README.

Проверка: на чистых томах `make clean` → `cp .env.example .env` →
`make up` (1 мин 51 с) → `make smoke` — 24 пройдено, 0 ошибок, 2171 MiB.
Перезапуск `make down` → `make up` → `make smoke` — 24/0. Также зелены
`make config-test` (3/0 и 5/0), `make smoke-cluster` (8/8) и
`make smoke-guards` (3/0 и 3/0).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-31 08:46:04 +03:00
co-authored by Claude Opus 5
parent dca0142fd1
commit 63c42bc068
24 changed files with 1493 additions and 31 deletions
+12 -3
View File
@@ -1,9 +1,9 @@
COMPOSE := docker compose
COMPOSE ?= docker compose
.PHONY: up down clean ps logs smoke smoke-guards
.PHONY: up down clean ps logs config-test smoke smoke-cluster smoke-guards
up:
$(COMPOSE) up --detach --wait --wait-timeout 180
$(COMPOSE) up --detach --build --wait --wait-timeout 600
down:
$(COMPOSE) down --remove-orphans
@@ -17,8 +17,17 @@ ps:
logs:
$(COMPOSE) logs --follow
config-test:
COMPOSE_BIN="$(COMPOSE)" ./scripts/config-test.sh
./tests/stand-smoke-static.sh
./tests/docs-guards.sh
smoke:
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-smoke.sh
smoke-cluster:
./scripts/clickhouse-smoke.sh
smoke-guards:
./tests/smoke-guards.sh
COMPOSE_BIN="$(COMPOSE)" ./tests/stand-smoke-guards.sh