All checks were successful
CI Trade-In / changes (pull_request) Successful in 24s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 29s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 3m15s
CI / backend-tests (pull_request) Successful in 7m37s
Тема форума для уведомлений бэкапов задаётся только env-файлом на хосте, а в образцах её не было вовсе. На проде она задана, но не та: 158 («алерты») в /opt/gendesign/secrets/backup-notify.env и forgejo-backup.env на Beget и в /etc/default/gendesign-backup на Poincare. По решению #3163 инфраструктура идёт в 245 «Metrics». Значение на хостах этот коммит не меняет. - ops/gendesign-backup*.default.example: строка #TELEGRAM_TOPIC_ID=245 с причиной и ловушкой: тема обязана лежать в одном файле с токеном и чатом, иначе notify() её не прочитает. - ops/crontab-beget.cron сверен с живым crontab Beget: сторожа и бэкап волта получают BACKUP_ENV_FILE=/opt/gendesign/secrets/backup-notify.env. Без него переустановка crontab из репозитория глушила бы алерты бэкапов на Beget. - ops/uptime-healthcheck.sh и его образец удалены: скрипт не запущен ни на одном хосте (crontab, cron.d, таймеры), доступность сторожат uptime-мониторы GlitchTip на Beget (gendsgn.ru, /health, meraocenka.ru — раз в 60 с). Тест исполняет настоящий check-backup-staleness.sh с образцом, заполненным по инструкции, и проверяет адрес в вызове curl: message_thread_id=245. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
64 lines
5.9 KiB
Text
64 lines
5.9 KiB
Text
# crontab ОСТАЮЩЕГОСЯ хоста (Beget, 46.173.16.127) — после переезда 30.08.
|
||
#
|
||
# Устанавливать НЕ РАНЬШЕ, чем стек уедет на Selectel:
|
||
# crontab /opt/gendesign/ops/crontab-beget.cron
|
||
# crontab -l # сверить
|
||
#
|
||
# ЗАЧЕМ ЭТОТ ФАЙЛ. Сегодняшний crontab Beget'а обслуживает ОБА контура сразу:
|
||
# и остающийся (Forgejo), и уезжающий (tradein/gendesign). После переезда пять
|
||
# записей начнут ходить в контейнеры, которых на этом хосте больше нет —
|
||
# `docker exec tradein-backend ...` будет падать каждую ночь. Само по себе это
|
||
# ещё полбеды; беда в том, что вместе с ними перестанут обновляться sentinel'ы
|
||
# бэкапов, сторож это честно заметит — и упрётся в то, что канал оповещения
|
||
# не настроен (#2203: TELEGRAM_* нет ни в одном env-файле). То есть бэкапы
|
||
# пропадут молча.
|
||
#
|
||
# Разделение на два файла — чтобы этот переход был явным действием, а не
|
||
# «забыли поправить crontab».
|
||
|
||
# ── Forgejo: остаётся здесь ─────────────────────────────────────────────────
|
||
# Конфиг лежит не в /etc/default (туда нет доступа без root), а в
|
||
# /opt/gendesign/secrets — путь передаётся переменной.
|
||
15 4 * * * FORGEJO_BACKUP_ENV_FILE=/opt/gendesign/secrets/forgejo-backup.env bash /opt/gendesign/ops/backup-forgejo.sh >> /opt/gendesign/logs/backup-forgejo.log 2>&1
|
||
|
||
# Сторож пропущенных прогонов для forgejo-бэкапа. Порог 26ч.
|
||
# Канал оповещения сторожей и бэкапа волта — /opt/gendesign/secrets/backup-notify.env
|
||
# (TELEGRAM_BOT_TOKEN/CHAT_ID/TOPIC_ID, тема 245 «Metrics», #3164). Без
|
||
# BACKUP_ENV_FILE notify() ищет /etc/default/gendesign-backup, где канала на
|
||
# этом хосте нет, — алерты молча не уходят никуда.
|
||
0 * * * * BACKUP_ENV_FILE=/opt/gendesign/secrets/backup-notify.env bash /opt/gendesign/ops/check-backup-staleness.sh /opt/gendesign/backups/forgejo/.last_success 26 "forgejo backup" >> /opt/gendesign/logs/backup-staleness.log 2>&1
|
||
|
||
# ── Бэкап волта Obsidian (CouchDB) ──────────────────────────────────────────
|
||
# Волт остаётся на этом хосте вместе с Forgejo и GlitchTip, поэтому запись
|
||
# живёт здесь, а не в crontab-poincare. До #3057 у CouchDB не было
|
||
# автоматического бэкапа вообще — единственной копией был ручной месячный
|
||
# прогон на машине владельца.
|
||
# Скрипт ОСТАНАВЛИВАЕТ CouchDB на время снятия снимка (секунды, данных ~85 МБ):
|
||
# file-level копия работающего узла может оказаться рассогласованной. Время —
|
||
# 04:45, между forgejo-бэкапом (04:15) и недельной уборкой докера (04:00 вс),
|
||
# чтобы три задачи не дрались за диск и сеть одновременно.
|
||
45 4 * * * BACKUP_ENV_FILE=/opt/gendesign/secrets/backup-notify.env bash /opt/gendesign/ops/backup-couchdb.sh >> /opt/gendesign/logs/backup-couchdb.log 2>&1
|
||
|
||
# Сторож пропущенных прогонов для бэкапа волта. Порог 26ч — как у остальных:
|
||
# сутки плюс запас на сдвиг прогона.
|
||
0 * * * * BACKUP_ENV_FILE=/opt/gendesign/secrets/backup-notify.env bash /opt/gendesign/ops/check-backup-staleness.sh /opt/gendesign/backups/couchdb/.last_success 26 "couchdb backup" >> /opt/gendesign/logs/backup-staleness.log 2>&1
|
||
|
||
# ── Уборка докера ───────────────────────────────────────────────────────────
|
||
# Остаётся здесь, потому что здесь остаются CI-раннеры (#2881) — именно их
|
||
# тома и растут. На Selectel нужна СВОЯ такая же запись (см. crontab-poincare).
|
||
0 4 * * 0 bash /opt/gendesign/ops/docker-prune.sh >> /tmp/gendesign-docker-prune.log 2>&1
|
||
|
||
# ── ЧТО ОТСЮДА УБРАНО И ПОЧЕМУ ──────────────────────────────────────────────
|
||
# Все записи ниже переехали в ops/crontab-poincare.cron, потому что обращаются
|
||
# к контейнерам и данным, которых на Beget после переезда не будет:
|
||
#
|
||
# 30 4 * * * backup-tradein-db.sh -> dump из tradein-postgres
|
||
# 30 3 * * * ops/backup.sh -> dump из gendesign-postgres
|
||
# 0 5 * * * backfill_houses_dadata -> docker exec tradein-backend
|
||
# 30 5 * * * geocode_deals_from_houses -> docker exec tradein-backend
|
||
# 45 5 * * * geocode_deals_nominatim -> docker exec tradein-backend
|
||
# 0 * * * * staleness: backups/.last_success (main-бэкап уехал)
|
||
# 0 * * * * staleness: backups/tradein/.last_success (tradein-бэкап уехал)
|
||
#
|
||
# ⚠️ Оставить их здесь = пять падающих задач в сутки И потерянные бэкапы
|
||
# обоих продуктовых кластеров.
|