
Цель урока: Свести все знания курса в единый алгоритм действий при сбоях. Мы разберем пошаговый сценарий диагностики: от проверки доступности до восстановления из бэкапов.
Ситуация: Сайт/Сервис не работает.
Ваша роль: Root.
Ваша задача: Восстановить работу максимально быстро.
ЭТАП 0: Проверка реальности (А не у меня ли проблемы?)
Прежде чем лезть в консоль, убедитесь, что сервер действительно лежит.
-
Проверка извне:
-
Откройте сайт с телефона (через мобильный интернет).
-
Используйте сервис проверки (например, ping-admin.ru или check-host.net).
-
Пинганите сервер со своего компьютера:
ping -c 4 ВАШ_IP
-
-
Вердикт:
-
Если пинг идет, но сайт не открывается - проблема в веб-сервере или базе данных.
-
Если пинга нет и SSH не подключается - сервер завис или проблемы у хостера.
-
ЭТАП 1: Доступ к телу (Вход в систему)
Попробуйте подключиться по SSH:
ssh root@ВАШ_IP
-
Сценарий А: Заходит быстро.
Отлично, проблема программная. Переходим к Этапу 2. -
Сценарий Б: Заходит очень долго (30+ секунд).
Сервер перегружен (CPU/Disk) или проблемы с DNS (UseDNS no). Ждите. Если зашли - сразу запускайте htop. -
Сценарий В: "Connection Refused" или "Timeout".
SSH упал или сервер выключен.
Действие: Идите в панель управления хостинга (VDS) и открывайте VNC-консоль (аварийную консоль). Это как подключить монитор к серверу напрямую. Если и там чернота - делайте Hard Reset (перезагрузку по питанию) через панель хостера.
ЭТАП 2: "Золотая четверка" (Диагностика ресурсов)
Вы внутри. Не спешите перезагружать службы! Сначала поймите причину, иначе она повторится через 5 минут.
Используем метод USE (Utilization, Saturation, Errors).
Шаг 1. Load Average (Общая нагрузка)
uptime
-
Смотрим: Три цифры в конце.
-
Анализ: Если цифра больше количества ваших ядер (например, 5.0 на 1 ядре) - сервер захлебывается.
-
Действие: Если LA высокий - ищем виновника.
Шаг 2. CPU и Процессы (Кто грузит?)
htop
(Если htop нет, используйте top).
-
Смотрим: Кто в топе списка?
-
Анализ:
-
mysql / php-fpm - нормальная рабочая нагрузка (возможно, много посетителей).
-
gzip / tar - кто-то запустил бэкап в рабочее время.
-
kswapd0 - Внимание! Нехватка памяти (см. Шаг 3).
-
Странный процесс (xmr, miner, набор букв) - Взлом/Майнер.
-
Шаг 3. RAM и SWAP (Память)
free -h
-
Смотрим: Колонку available и строку Swap -> used.
-
Анализ:
-
available почти 0 и Swap используется? Сервер ушел в свопинг. Диск тормозит всю систему.
-
Действие: Ищите "Out of memory" в логах ядра:
dmesg -T | grep -i "kill"Если видите, что MySQL был убит (OOM Killer) - ему не хватает памяти.
-
Шаг 4. Диск (Место и скорость)
Место:
df -h
-
Анализ: Если корень / занят на 100% - сервисы не стартуют.
-
Действие: Чистим логи (
journalctl --vacuum-size=100M) или кэшapt clean. Ищем большие файлы:ncdu / или du -sh /*.
Скорость (если место есть, но все тормозит):
iostat -xz 1
-
Анализ: Если %util (последняя колонка) около 100% - диск "полкой".
-
Действие:
iotop, чтобы найти процесс, убивающий диск.
Шаг 5. Сеть (Трафик)
nload
(или ip -s link).
-
Анализ: Входящий трафик забит под полку тарифа? Это DDoS.
-
Действие:
iftop -P, чтобы увидеть IP атакующих. Блокируем через ufw или iptables.
ЭТАП 3: Проверка Служб (Systemd & Docker)
Если ресурсы (CPU/RAM/Disk) в норме, значит, упала конкретная программа.
1. Проверяем статус основных служб
systemctl status nginx mysql php8.2-fpm
-
Зеленый (active running): Работает.
-
Красный (failed): Упал. Читайте текст ошибки тут же.
-
Серый (dead): Выключен.
2. Проверяем контейнеры (если используете Docker)
docker ps -a
-
Смотрим колонку STATUS.
-
Если видите Exited (1) 2 minutes ago - контейнер упал. Смотрите логи:
docker logs ИМЯ_КОНТЕЙНЕРА
3. Слушает ли кто-то порт?
Иногда служба пишет "running", но порт занят другим процессом.
ss -tulpn | grep :80
Вы должны видеть nginx или apache или docker-proxy. Если пусто - никто не принимает соединения.
ЭТАП 4: Анализ Логов (Следствие)
Если сервис не стартует (failed), ответ всегда в логах.
1. Системные ошибки (почему сервис не стартует):
journalctl -u nginx -e
(-e перематывает в конец, к самой свежей ошибке).
2. Ошибки приложения (почему сайт выдает 500/502):
-
Nginx: /var/log/nginx/error.log
-
Apache: /var/log/apache2/error.log
-
MySQL: /var/log/mysql/error.log
-
PHP: /var/log/php...
Как читать в реальном времени (пока вы пробуете открыть сайт):
tail -f /var/log/nginx/error.log
ЭТАП 5: Типичные сценарии и решения
Сценарий 1: "Error establishing a database connection"
-
Причина: Упал MySQL/MariaDB.
-
Диагностика:
systemctl status mysql. -
Если упал из-за памяти (OOM): Добавить SWAP или уменьшить буферы в my.cnf.
-
Если пишет "Disk full": Освободить место.
-
Лечение:
systemctl restart mysql.
Сценарий 2: "502 Bad Gateway" (Nginx)
-
Причина: Nginx работает, но бэкенд (PHP-FPM, Apache, Python, Docker) не отвечает.
-
Диагностика: Проверьте статус бэкенда (
systemctl status php8.2-fpm). -
Лечение: Перезагрузить PHP/Apache.
Сценарий 3: "504 Gateway Time-out"
-
Причина: Бэкенд работает, но не успевает ответить (скрипт завис, тяжелый запрос к базе).
-
Диагностика:
htop(процесс php висит в топе),show processlistв MySQL (зависшие запросы).
Сценарий 4: Сервер работает, но сайт не открывается (Timout)
-
Причина: Сетевой экран (Firewall).
-
Диагностика:
ufw status. -
Лечение: Проверьте, открыты ли порты 80/443.
ufw allow 80/tcp ufw allow 443/tcp
ЭТАП 6: Красная кнопка (Восстановление)
Если ничего не помогает, конфигурации перепутаны, и вы не понимаете, что происходит.
1. Мягкая перезагрузка:
reboot
Иногда "зависший" процесс или сетевой стек проще сбросить, чем чинить.
2. Откат конфигов (Git):
Если вы использовали git для /etc/, как в Уроке 55:
git diff # Посмотреть, что я сломал сегодня
git checkout . # Вернуть как было
3. Восстановление из бэкапа:
Если база данных повреждена безвозвратно или хакеры удалили файлы.
Используем архивы, созданные в Уроке 54 или 20.
ШПАРГАЛКА АДМИНИСТРАТОРА (Command Cheat Sheet)
| Задача | Команда |
| Жив ли сервер? | ping IP (снаружи), uptime (внутри) |
| Нагрузка CPU | htop, top |
| Память/SWAP | free -h, vmstat 1 |
| Место на диске | df -h |
| Кто ест диск? | iostat -xz 1, iotop |
| Сетевые порты | ss -tulpn |
| Трафик/Сеть | nload, iftop |
| Логи системы | journalctl -xe, dmesg -T |
| Логи сервиса | journalctl -u [service] -f |
| Перезапуск | systemctl restart [service] |
ЗАКЛЮЧЕНИЕ КУРСА
Поздравляю! Вы прошли путь из 72 уроков.
Что теперь?
Системное администрирование и DevOps - это не набор выученных команд. Это образ мышления.
-
Не верьте на слово - смотрите логи.
-
Не делайте вручную то, что можно автоматизировать.
-
Не оставляйте сервер без присмотра (мониторинг).
-
И всегда делайте бэкапы.
Теперь вы готовы к реальной работе. Ваш сервер - ваша крепость, и у вас есть все ключи от неё.
Удачи, коллега! Благодарю, что вместе со мной прошли данный курс! :)
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

