🧙 Садовник: уточнил шаги, добавил проверки и обоснования. Примите, если полезно.
#1Прежде чем диагностировать сервер, убедиться, что маршрут до него существует.
curl -s -o /dev/null -w '%{http_code}\n' https://github.com- –Код 200 — связь есть, продолжать
- –Пустой ответ — устранять связь, сервер ни при чём
Открыть status.equiply.ru. При её отказе в Telegram поступает отдельное оповещение от watchdog.
curl -s -o /dev/null -w '%{http_code}\n' https://status.equiply.ru- –Мониторинг отвечает — оповещению можно доверять
- –Не отвечает — наблюдение за сайтами прекращено, это самостоятельный инцидент
Мониторинг наблюдает мир из одной точки. Рабочая станция — вторая независимая.
curl -sS -o /dev/null -w 'код %{http_code}, время %{time_total}s\n' https://ДОМЕН- –Результат совпал с оповещением — отказ подтверждён
- –Сервис открывается — проверять маршрут от мониторинга, а не сервис
Заголовок содержит ответ: «netcup: не отвечают 3 из 16 сайтов» либо «ttinv.ru не отвечает».
- –Указан сервер — переходить к серверу
- –Указан домен — переходить к его проекту
python3 -c "import yaml,pathlib; d=yaml.safe_load(pathlib.Path('/home/mike/Projects/arch-hq/registry/servers.yml').read_text()); [print(s['name'], [x['host'] for x in (s.get('sites') or [])]) for s in d['servers']]"Задача уже создана в репозитории затронутого проекта, в её тексте перечислено всё семейство.
repo-for --all ДОМЕН- –Возвращён arch-hq — репозиторий не установлен, диагностика только по логам
Параметры доступа находятся в ~/.ssh/config и порождаются из реестра серверов.
ssh netcup # либо servicest4, brave- –Подключение не устанавливается — перейти к шагу о недоступности сервера
Остаётся панель управления хостингом и перезагрузка. Ссылки на панели в реестре ОТСУТСТВУЮТ — известный пробел.
docker ps --format '{{.Names}}\t{{.Status}}' | grep -v healthy- –Контейнер отсутствует в выводе — он не запущен, проверить docker ps -a
docker logs --tail 200 --timestamps КОНТЕЙНЕР 2>&1 | tail -60- –Искать строки error, failed, denied, exit code
- –Журнал пуст — проверить docker inspect КОНТЕЙНЕР --format '{{.State}}'
df -h / && free -m && docker system df- –Свободно менее 10% — причина установлена
docker ps --format '{{.Names}}\t{{.RunningFor}}' | sort -k2Наименее затратное действие, если причина в зависшем процессе, а не в коде.
docker compose restart СЕРВИС- –НЕ применять docker compose down — приводит к потере томов и кэшей
- –НЕ применять docker system prune без фильтра
Исправить в локальной копии, отправить в main. Развёртывание выполняется автоматически.
Мониторинг фиксирует восстановление и направляет отдельное сообщение.
- –Оповещение не поступило в течение 5 минут — проверить сервис вручную
В том репозитории, где она создана. Указать установленную причину и выполненные действия.
gh issue close НОМЕР -R mikey-semy/РЕПОЗИТОРИЙ -c 'причина: … ; выполнено: …'