Загрузка...
Загрузка...
Плейбук реагирования на инциденты. Немедленные действия, диагностика, типичные причины (DNS, SSL, сервер, DDoS), коммуникация, постмортем.
Как рассчитать финансовые потери от простоя сайта. Формулы для e-commerce, SaaS, медиа. Расчёт SLA, примеры расчётов, обоснование инвестиций в мониторинг.
МониторингПрактическое руководство по мониторингу SSL-сертификатов. Автоматические уведомления, настройка проверок, интеграция с CI/CD. Как избежать простоя сайта из-за просроченного сертификата.
БезопасностьКак работает распространение DNS, сколько ждать после смены NS или A-записи. TTL, кэширование, проверка пропагации с разных серверов.
БезопасностьСправочник DNS-записей: типы, назначение, примеры. A, AAAA, CNAME, MX, TXT, NS, SOA, SRV. Настройка домена для сайта и почты.
Поделитесь с коллегами или изучите другие материалы блога
Сайт недоступен. Пользователи пишут в поддержку, менеджеры паникуют, вы получаете алерт. Что делать в первые минуты, как быстро локализовать причину и восстановить работу — от этого зависит длительность простоя и масштаб потерь. В этом руководстве — пошаговый план действий при падении сайта.
Не каждый алерт означает реальную проблему. Возможные ложные срабатывания:
Действия:
Если сайт открывается у вас, но мониторинг показывает ошибку — возможно, проблема на стороне мониторинга или региональная (сайт недоступен из определённых регионов).
Определите, что именно недоступно:
| Симптом | Возможная причина |
|---|---|
| Сайт не открывается вообще | DNS, хостинг, сеть |
| Ошибка «Ваше соединение не защищено» | SSL-сертификат |
| Ошибка 502/503 | Сервер приложений, перегрузка |
| Ошибка 500 | Ошибка в коде, база данных |
| Медленная загрузка | Перегрузка, DDoS |
| Часть страниц не работает | Конкретный сервис, API |
Если инцидент подтверждён — немедленно уведомите ответственных. Чёткий канал коммуникации (Telegram-чат, Slack) критичен. Укажите:
Не тратьте время на поиск виноватых. Сначала — восстановление.
После подтверждения инцидента переходите к диагностике. Ниже — последовательность проверок от внешних слоёв к внутренним.
DNS — первая точка контакта пользователя с сайтом. Если DNS не резолвится, браузер не знает, куда отправлять запрос.
Проверка через DNS Lookup:
Типичные проблемы DNS:
| Проблема | Симптом | Решение |
|---|---|---|
| Истёк домен | DNS не резолвится | Продлить домен у регистратора |
| Неверные NS-записи | Домен указывает на несуществующие NS | Исправить NS у регистратора |
| DDoS на DNS | Медленный или нестабильный резолв | Перейти на защищённый DNS (Cloudflare, etc.) |
| Кэш устарел | Часть пользователей видит старый IP | Подождать TTL или снизить TTL заранее |
Быстрая проверка из терминала:
dig example.com +short
nslookup example.com 8.8.8.8
Если DNS резолвится корректно, проверьте доступность сервера.
Проверки:
ping example.com
traceroute example.com
curl -I https://example.com
Интерпретация:
ping не отвечает — сервер выключен, файрвол блокирует ICMP, или сеть недоступнаtraceroute обрывается на определённом узле — проблема на участке сети или у хостингаcurl возвращает таймаут — сервер не отвечает на HTTP(S)curl возвращает 5xx — сервер доступен, но приложение падаетОшибка «Ваше соединение не защищено» или «Certificate has expired» — проблема с сертификатом.
Проверка через SSL Checker:
Типичные проблемы SSL:
| Проблема | Причина | Решение |
|---|---|---|
| Сертификат истёк | Забыли обновить | Установить новый сертификат, перезапустить веб-сервер |
| Неверная цепочка | Промежуточные сертификаты не установлены | Добавить полную цепочку |
| Несоответствие домена | Сертификат для другого домена | Выпустить сертификат для правильного домена |
| Смешанный контент | Часть ресурсов по HTTP | Исправить ссылки на HTTPS |
Срочное обновление Let's Encrypt:
certbot renew --force-renewal
systemctl reload nginx
Сервер отвечает, но возвращает 5xx. Проблема в приложении или конфигурации.
502 Bad Gateway — веб-сервер (Nginx, Apache) не может получить ответ от бэкенда (PHP-FPM, Node, etc.):
503 Service Unavailable — сервис временно недоступен:
500 Internal Server Error — ошибка в коде приложения:
Проверка логов:
# Nginx
tail -f /var/log/nginx/error.log
# PHP-FPM
tail -f /var/log/php-fpm/error.log
# Системные логи
journalctl -u nginx -f
journalctl -u php-fpm -f
Многие падения сайтов вызваны проблемами с БД.
Симптомы: 500/503, таймауты, «Error establishing database connection»
Проверки:
# MySQL/MariaDB
mysql -u user -p -e "SELECT 1"
# Проверка подключений
mysqladmin processlist
# Проверка диска (БД может не писать при полном диске)
df -h
Типичные проблемы: исчерпан диск, MySQL упал, исчерпаны соединения, долгие запросы блокируют БД.
Сайт медленный или периодически недоступен при высокой нагрузке.
Симптомы:
Действия:
Временные меры в Nginx:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_req zone=one burst=20 nodelay;
Если сайт недоступен долго (более 15–30 минут), пользователи ищут информацию.
Где публиковать статус:
Что писать:
Пример:
«В настоящее время сайт испытывает технические трудности. Наша команда работает над устранением. Ожидаем восстановление в течение часа. Приносим извинения за неудобства.»
После внесения исправлений:
Постмортем — разбор инцидента с целью предотвращения повторения.
Сохраните постмортем в доступном месте. При повторении похожего инцидента он сэкономит время.
Распечатайте или сохраните в закладках:
[ ] Сайт не открывается у меня / у других?
[ ] DNS резолвится? (dig, nslookup)
[ ] Ping доходит до сервера?
[ ] SSL-сертификат валиден? (браузер, ssl-checker)
[ ] Какой HTTP-статус возвращает? (curl -I)
[ ] Логи веб-сервера — что пишут?
[ ] Логи приложения — ошибки?
[ ] База данных доступна?
[ ] Диск не заполнен? (df -h)
[ ] CPU/память не перегружены?
Uptime Monitor — мониторинг доступности. Чем раньше вы получите алерт, тем быстрее начнёте диагностику. Рекомендуемый интервал проверки — 5 минут.
SSL Checker — проверка SSL-сертификата. Используйте при подозрении на проблему с HTTPS. Для профилактики — SSL Monitor с уведомлениями об истечении срока.
DNS Lookup — проверка DNS-записей. Первый инструмент при «сайт не открывается».
Настройте мониторинг до первого инцидента. См. «Мониторинг доступности сайта: зачем нужен и как настроить».
Ведите runbook — документы с пошаговыми инструкциями для типичных сценариев (SSL истёк, MySQL упал, диск заполнен).
Рассчитайте стоимость простоя — это мотивирует инвестировать в надёжность. См. «Сколько стоит простой сайта: расчёт потерь от даунтайма».
Проводите учебные инциденты — раз в квартал имитируйте падение и отрабатывайте реакцию команды.
Держите контакты под рукой — хостинг, регистратор, CDN. В момент инцидента искать контакты в почте — потеря времени.
Готовые инструкции ускоряют реакцию. Ниже — шаблоны для частых сценариев.
Симптомы: Ошибка «Ваше соединение не защищено», «Certificate has expired».
Действия:
/etc/letsencrypt/live/domain/)certbot renew --force-renewalsystemctl reload nginx (или apache2)Симптомы: 500/503, ошибки в логах «No space left on device».
Действия:
df -hdu -sh /* | sort -rh | head -20truncate -s 0 /var/log/nginx/access.log (или ротация)Симптомы: «Error establishing database connection», 500 на всех страницах с БД.
Действия:
systemctl status mysqlsystemctl restart mysqltail -100 /var/log/mysql/error.logfree -hСимптомы: Медленный сайт, таймауты.
Действия:
top или htop[ИНЦИДЕНТ] Сайт example.com недоступен
Время: 14:35
Статус: Диагностика
Ответственный: @username
[ОБНОВЛЕНИЕ] example.com
Проблема: SSL-сертификат истёк
Действия: Обновляем сертификат
Ожидаемое восстановление: 15–20 минут
[РЕШЕНО] example.com
Восстановлено: 14:52
Причина: Истёк SSL-сертификат
Длительность: 17 минут
Постмортем: в течение 48 часов
В настоящее время сайт example.com испытывает технические трудности. Наша команда работает над устранением. Приносим извинения за неудобства. Обновления: [ссылка на статус]
Отслеживайте показатели для улучшения процесса:
| Метрика | Описание | Целевое значение |
|---|---|---|
| MTTD (Mean Time To Detect) | Время от начала инцидента до обнаружения | < 5 минут с мониторингом |
| MTTI (Mean Time To Identify) | Время до определения причины | < 15 минут |
| MTTR (Mean Time To Resolve) | Время до восстановления | Зависит от типа инцидента |
| Количество инцидентов | За месяц/квартал | Тренд к снижению |
Регулярные постмортемы и обновление runbook'ов снижают MTTI и MTTR.
Ведите документ с:
Сайт упал — это не вопрос «если», а «когда». Готовность команды к инцидентам определяет разницу между 30 минутами простоя и 4 часами. Используйте этот план как основу для своего плейбука и адаптируйте под вашу инфраструктуру.