Цель урока: Свести все знания курса в единый алгоритм действий при сбоях. Мы разберем пошаговый сценарий диагностики: от проверки доступности до восстановления из бэкапов.

Ситуация: Сайт/Сервис не работает.
Ваша роль: Root.
Ваша задача: Восстановить работу максимально быстро.

ЭТАП 0: Проверка реальности (А не у меня ли проблемы?)

Прежде чем лезть в консоль, убедитесь, что сервер действительно лежит.

  1. Проверка извне:

    • Откройте сайт с телефона (через мобильный интернет).

    • Используйте сервис проверки (например, 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).

    • Странный процесс (xmrminer, набор букв) - Взлом/Майнер.

Шаг 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 htoptop
Память/SWAP free -hvmstat 1
Место на диске df -h
Кто ест диск? iostat -xz 1iotop
Сетевые порты ss -tulpn
Трафик/Сеть nloadiftop
Логи системы journalctl -xedmesg -T
Логи сервиса journalctl -u [service] -f
Перезапуск systemctl restart [service]

ЗАКЛЮЧЕНИЕ КУРСА

Поздравляю! Вы прошли путь из 72 уроков.

Что теперь?
Системное администрирование и DevOps - это не набор выученных команд. Это образ мышления.

  • Не верьте на слово - смотрите логи.

  • Не делайте вручную то, что можно автоматизировать.

  • Не оставляйте сервер без присмотра (мониторинг).

  • И всегда делайте бэкапы.

Теперь вы готовы к реальной работе. Ваш сервер - ваша крепость, и у вас есть все ключи от неё.
Удачи, коллега! Благодарю, что вместе со мной прошли данный курс! :)

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)