Сообщение приходит в неудобное время: «сайт не работает». У вас есть несколько минут, прежде чем вопрос изменится с «что случилось» на «почему никто не заметил». Вот порядок, в котором мы действуем. Он написан для тех, кто ведёт несколько сайтов и не может позволить себе импровизировать.
Вся процедура укладывается в пятнадцать минут, если сдержаться и не бросаться чинить, пока не ясно, какой уровень сломан.
Минуты 0–2: подтвердите сбой
Прежде чем что-либо трогать, убедитесь, что сайт не работает у других людей, а не только у того, кто о нём сообщил.
- Откройте сайт на телефоне с отключённым Wi-Fi. Если он загрузился, проблема в сети того, кто сообщил, в устаревшем кэше DNS или в расширении браузера.
- Используйте проверку не из вашей сети. Бесплатный инструмент «Работает ли сайт» запрашивает URL нашей проверкой и показывает код ответа и время ответа, а это говорит больше, чем «не загружается».
- Из терминала получите код ответа и время:
curl -sS -o /dev/null -w '%{http_code} total %{time_total}s connect %{time_connect}s\n' https://example.com
000 означает, что соединение не установилось (DNS, брандмауэр или сервер выключен). Число означает, что сервер ответил, и оно подсказывает, куда смотреть; справочник кодов ответа HTTP объясняет каждый из них простыми словами.
Задайте ещё один вопрос, прежде чем идти дальше: что менялось за последний час? Развёртывание, обновление плагина или темы, правка DNS, правило брандмауэра или Cloudflare, перезагрузка сервера, продлённый или истёкший сертификат. Большинство сбоев следует за изменением, и откат изменения обычно самое быстрое решение.
Минуты 2–6: найдите сломанный уровень
Двигайтесь снаружи внутрь. Каждая команда исключает один уровень.
DNS. Разрешается ли имя и в тот ли адрес, которого вы ждёте?
dig +short example.com
dig +short NS example.com
Нет ответа или адрес вам незнаком — значит, дело в DNS или в истёкшем домене. Быстрая проверка даты регистрации стоит десяти минут догадок: воспользуйтесь инструментом срока действия домена.
TLS. Действителен ли сертификат прямо сейчас?
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
notAfter в прошлом — это истёкший сертификат. Проверка SSL показывает то же самое вместе с цепочкой, а статья о том, что делать, если сертификат истёк, описывает восстановление.
HTTP. Что говорит сервер? Воспользуйтесь таблицей ниже.
| Что вы видите | Что это обычно значит | Первый шаг |
|---|---|---|
Connection refused или тайм-аут (000) | Сервер выключен, брандмауэр, неверный IP | Проверьте страницу статуса хостинга, затем сервер |
| 502, 504 | Прокси не может достучаться до приложения, или приложение слишком медленное | Перезапустите процесс приложения, прочитайте его журнал |
| 503 | Приложение перегружено или на обслуживании | Проверьте CPU, память и флаг обслуживания |
| 500 | Ошибка приложения | Прочитайте журналы ошибок приложения и веб-сервера |
| 521, 522, 523, 524 (Cloudflare) | Cloudflare не может достучаться до вашего origin | Проверьте origin напрямую, проверьте брандмауэр origin |
| 403 | Блокирует WAF, плагин безопасности или правило | Посмотрите последнее изменение брандмауэра или плагина |
| 200, но страница неправильная | Страница с ошибкой базы данных, пустой шаблон, испорченный кэш | Откройте страницу и прочитайте её |
Сервер. Если вы можете войти, три команды покрывают большинство причин:
df -h # full disk is a classic
free -m # out of memory, swapping
systemctl status nginx php8.3-fpm # or apache2, your app service
tail -n 100 /var/log/nginx/error.log
Приложение. Белая страница или 500 сразу после развёртывания указывает на код. Для WordPress переименуйте каталог плагинов через SFTP, чтобы разом исключить плагины; руководство по мониторингу WordPress перечисляет обычных подозреваемых.
Минуты 6–12: устраните причину, начиная с самого малого изменения
Выберите самое дешёвое действие, отменяющее наиболее вероятную причину, и делайте по одной вещи, чтобы знать, что помогло.
- Развёртывание: откатитесь на предыдущий выпуск, прежде чем отлаживать вперёд.
- Обновление плагина или темы: отключите последний обновлённый плагин.
- Переполненный диск: удалите старые журналы и резервные копии, затем найдите то, что его заполняет.
- Упавший процесс: перезапустите его, затем выясните, почему он упал. Перезапуск без чтения журнала — это сбой, который повторится в 3 часа ночи.
- Истёкший сертификат или домен: сначала продлите, кто был виноват, выясните потом.
- Изменение DNS: верните старую запись; распространение занимает столько, сколько указывает TTL.
- Всплеск трафика: если сервер просто перегружен, включите кэш или поставьте сайт за CDN, а масштабируйтесь уже после инцидента.
Если за двенадцать минут ничего не помогло, остановитесь и обратитесь к хостингу или к тому, кто сделал последнее изменение. Пятнадцать минут одиночной отладки оправданны; шестнадцатая обычно означает разговор, который вам следовало начать раньше.
Минуты 12–15: сообщите клиенту и запишите
Отправьте это, ещё не зная окончательной причины:
Мы знаем, что сайт недоступен с 14:07. Мы работаем над этим и сообщим новости до 14:45. С вашей стороны никаких действий не требуется.
Обновите сообщение, когда появится причина, и ещё раз, когда всё починено: что случилось, как долго длилось, что вы изменили. Если у клиента есть страница статуса, обновите её, чтобы вопросы прекратились.
Затем запишите для себя четыре строки: время начала, время обнаружения, время устранения, причина. Они станут записью об инциденте в ежемесячном отчёте, а разрыв между «началось» и «обнаружено» — это число, которое решает, нужен ли вам более хороший мониторинг.
Сделайте так, чтобы в следующий раз узнать первым
Сбой, о котором вы узнаёте от клиента, — это пробел в мониторинге. Минимальная настройка:
- HTTP-проверка главной страницы каждую минуту с проверкой ключевого слова, которое появляется, только когда страница отрисована правильно.
- Проверка страницы, которая приносит деньги (оформление заказа, запись, форма контактов).
- Проверки срока действия SSL и домена, которые оповещают до даты, а не после неё.
- Канал оповещений, который вы читаете ночью. Почта работает на всех тарифах. Telegram с кнопкой подтверждения одним нажатием требует платного тарифа.
- Вторая проверка перед отправкой оповещения, чтобы один потерянный пакет вас не разбудил.
В Tenium 30 мониторов с интервалом проверок 5 мин бесплатны; Starter ($7) проверяет с интервалом 1 мин и добавляет оповещения в Telegram, проверки SSL и срока действия домена. Страница мониторинга сайта описывает проверки, а сравнение Tenium и UptimeRobot показывает, как соотносятся тарифы, если вы уже пользуетесь другим сервисом.
Короткий чек-лист на память
- Подтвердить из второй сети и проверкой извне
- Спросить, что менялось за последний час
-
curl— код и время;dig— имя - Даты сертификата и домена
- Диск, память, процесс, журнал ошибок
- Откатить последнее изменение
- Написать клиенту в течение 15 минут
- Записать начало, обнаружение, устранение, причину
Частые вопросы
Как понять, что сайт не работает у всех, а не только у меня?
Откройте его через мобильный интернет, затем проверьте с сервера, который не находится в вашей сети. Бесплатный инструмент вроде страницы Tenium «Работает ли сайт» запрашивает сайт нашей проверкой и показывает код ответа и время ответа. Если проверка получает нормальный ответ, а вы нет, проблема в вашей сети, кэше DNS или браузере, а не в сайте.
Какая самая частая причина того, что сайт перестаёт работать?
Изменение, сделанное незадолго до этого: развёртывание, обновление плагина или темы, правка DNS, правило брандмауэра либо истёкший сертификат или домен. Прежде чем искать где-то ещё, спросите, что менялось за последний час.
Стоит ли сообщить клиенту до того, как я узнаю причину?
Да, коротко. Сообщение из двух строк о том, что вы знаете о проблеме, работаете над ней и сообщите новости через 30 минут, лучше молчания. Не называйте причину письменно, пока не подтвердите её.
Как узнавать о простое раньше клиента?
Подключите внешний монитор, который проверяет сайт каждую минуту и оповещает вас по почте или в Telegram. На тарифе Free вы получаете 30 мониторов с интервалом проверок 5 мин; Starter ($7) проверяет с интервалом 1 мин и добавляет оповещения в Telegram.
Читайте также
Связанные страницы Tenium
- Мониторинг сайта
- Бесплатный инструмент «Работает ли сайт»
- Tenium против UptimeRobot
- Все материалы блога
- Тарифы
Начните следить за первым сайтом бесплатно
30 мониторов бесплатно, проверки из 2 регионов, без банковской карты. Проверка SSL и срока действия домена — от $7 в месяц.