install.sh: флаг --monitoring — install.sh ни в одном пресете не поднимал monitoring

set_env_var COMPOSE_PROFILES перезаписывает значение целиком по пресету,
затирая media,monitoring из .env.example — Grafana/Prometheus оставались
не поднятыми, пока оператор не допишет профиль в .env вручную.

--monitoring дописывает monitoring к профилю, который выставил пресет,
и включает его сразу в тот же docker compose up (не только в .env).
This commit is contained in:
2026-07-26 02:57:36 +03:00
parent ea3c1f5280
commit ff8be92e28

View File

@@ -21,6 +21,7 @@
# ./install.sh # интерактивный опросник
# ./install.sh --preset 3 # неинтерактивно, пресет 3
# ./install.sh --preset 3 --yes # без подтверждений (скрипты/CI)
# ./install.sh --preset 2 --monitoring --yes # + профиль monitoring (Grafana/Prometheus)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -33,6 +34,12 @@ VERSION_FILE="$SCRIPT_DIR/VERSION"
PRESET=""
ASSUME_YES=0
# По умолчанию 0: `set_env_var COMPOSE_PROFILES` ниже (по каждому пресету)
# перезаписывает значение целиком, затирая `media,monitoring` из
# .env.example — без этого флага мониторинг остаётся не поднятым, пока
# оператор не допишет профиль вручную (см. .forcc/deploy/SESSION4-FINDINGS.md,
# ГРАБЛИ 2).
MONITORING=0
while [ $# -gt 0 ]; do
case "$1" in
@@ -44,6 +51,10 @@ while [ $# -gt 0 ]; do
ASSUME_YES=1
shift
;;
--monitoring)
MONITORING=1
shift
;;
-h|--help)
grep -E '^#( |$)' "$0" | sed 's/^#//'
exit 0
@@ -466,6 +477,17 @@ case "$PRESET" in
;;
esac
# --monitoring: дописать профиль monitoring к тому, что выставил пресет
# выше (set_env_var перезаписывает значение целиком, поэтому мониторинг
# нельзя было получить только сменой пресета — см. комментарий у MONITORING).
if [ "$MONITORING" = "1" ]; then
current_profiles="$(get_env_var COMPOSE_PROFILES)"
case ",${current_profiles}," in
*,monitoring,*) ;;
*) set_env_var COMPOSE_PROFILES "${current_profiles},monitoring" ;;
esac
fi
echo "[install] .env обновлён (пресет ${PRESET}, COMPOSE_PROFILES=$(get_env_var COMPOSE_PROFILES))"
echo "[install] Проверяю .env на dev-плейсхолдеры перед подъёмом стека"
@@ -562,6 +584,23 @@ ADMIN_EMAIL="$(get_env_var SEED_ADMIN_EMAIL)"
ADMIN_PASSWORD="$(get_env_var SEED_ADMIN_PASSWORD)"
GRAFANA_USER="$(get_env_var GRAFANA_ADMIN_USER)"
if [ "$MONITORING" = "1" ]; then
MONITORING_BLOCK="$(cat <<EOF2
Мониторинг (Grafana/Prometheus) поднят вместе со стеком (--monitoring):
Prometheus: http://127.0.0.1:9090 (только localhost, см. docs/deploy/DEPLOYMENT.md)
Grafana: http://127.0.0.1:3001 (${GRAFANA_USER:-admin} / см. .env GRAFANA_ADMIN_PASSWORD)
EOF2
)"
else
MONITORING_BLOCK="$(cat <<EOF2
Мониторинг (Grafana/Prometheus) — отдельный профиль compose, не входит
в базовые пресеты. Поднять сейчас: docker compose -f ${COMPOSE_FILE} --env-file ${ENV_FILE} --profile monitoring up -d
(или перезапустите install.sh с флагом --monitoring).
Grafana: http://localhost:3001 (${GRAFANA_USER:-admin} / см. .env GRAFANA_ADMIN_PASSWORD)
EOF2
)"
fi
cat <<EOF
============================================================
@@ -572,10 +611,7 @@ cat <<EOF
Админ: ${ADMIN_EMAIL:-см. .env SEED_ADMIN_EMAIL} / ${ADMIN_PASSWORD:-см. .env SEED_ADMIN_PASSWORD}
(смените пароль сразу после первого входа)
Мониторинг (Grafana/Prometheus) — отдельный профиль compose, не входит
в базовые пресеты:
docker compose -f ${COMPOSE_FILE} --env-file ${ENV_FILE} --profile monitoring up -d
Grafana: http://localhost:3001 (${GRAFANA_USER:-admin} / см. .env GRAFANA_ADMIN_PASSWORD)
${MONITORING_BLOCK}
Настройки модулей инстанса (чат, уровень AI) синхронизированы под
пресет ${PRESET} (админка → Настройки, при желании переключите вручную).