Зачем: рядом с кластером 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>
39 lines
1.8 KiB
Bash
Executable File
39 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
readonly ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
readonly README="$ROOT_DIR/README.md"
|
|
|
|
grep -Eq 'нода 1.*28123.*29000' "$README"
|
|
grep -Eq 'нода 2.*28124.*29001' "$README"
|
|
printf 'ЗЕЛЁНО: README перечисляет HTTP- и нативные порты обеих нод.\n'
|
|
|
|
grep -Eq 'После первого запуска.*`make clean`' "$README"
|
|
printf 'ЗЕЛЁНО: README объясняет сброс томов после смены исходных учётных данных.\n'
|
|
|
|
grep -Fxq -- '- нода 2 — `http://127.0.0.1:28124`, нативный порт `29001`;' "$README"
|
|
printf 'ЗЕЛЁНО: список портов остаётся единым списком.\n'
|
|
|
|
awk '
|
|
previous == "После изменения `infra/clickhouse/config.d/prometheus.xml` выполните" &&
|
|
$0 == "`docker compose restart clickhouse-01 clickhouse-02`: обычный `make up` не" {
|
|
found = 1
|
|
}
|
|
{previous = $0}
|
|
END {exit !found}
|
|
' "$README"
|
|
printf 'ЗЕЛЁНО: README требует перезапуск ClickHouse после изменения настройки метрик.\n'
|
|
|
|
grep_status=0
|
|
grep -q '3,4 GB' "$ROOT_DIR/scripts/stand-smoke.sh" || grep_status=$?
|
|
if [[ "$grep_status" -eq 0 ]]; then
|
|
printf 'ОШИБКА: отчёт проверки использует латинское обозначение GB.\n' >&2
|
|
exit 1
|
|
elif [[ "$grep_status" -ne 1 ]]; then
|
|
printf 'ОШИБКА: не удалось проверить обозначение единицы памяти.\n' >&2
|
|
exit 1
|
|
fi
|
|
printf 'ЗЕЛЁНО: отчёт проверки использует русское обозначение ГБ.\n'
|
|
|
|
printf 'ИТОГ: пройдено 5, ошибок 0\n'
|