Большинство владельцев сайтов узнают о проблемах от клиентов. Форма перестала отправлять заявки — узнали через неделю, потеряв заказы. Хостинг уронил сервер — узнали от клиента, который написал в гневе. Диск переполнился и база данных перестала писать — узнали, когда сайт полностью отвалился.

Хорошая новость: большинство этих проблем можно поймать на раннем этапе — за минуты или часы до того, как они станут катастрофой. Нужна система мониторинга. Это не «приятная опция», а базовая инфраструктура любого серьёзного сайта.

Что даёт мониторинг

Вы узнаёте о проблемах первым — не клиент. Вы понимаете, почему сайт тормозит или падает. Вы видите тренды: становится ли нагрузка выше, заканчивается ли место на диске, растёт ли число ошибок. Всё это — до того, как это ударит по бизнесу.

1. Четыре уровня мониторинга

Мониторинг — это не одна система, а слои. Каждый следующий ловит проблемы, которые не видны предыдущему. Начинать можно с первого уровня, но для серьёзного проекта нужны все четыре.

  • Uptime-мониторинг. Работает ли сайт вообще. Самое простое и обязательное. Проверяет доступность каждую минуту и присылает алерт при падении.
  • Метрики сервера. Загрузка процессора, память, диск, сеть. Позволяют увидеть приближение проблемы: место на диске заканчивается, нагрузка растёт.
  • Метрики приложения. Сколько запросов в секунду, какая средняя задержка, какой процент ошибок 5xx. Это уже про качество работы, а не про «работает или нет».
  • Ошибки в коде. Исключения в PHP, Python, Rust, JavaScript — всё, что падает, но не роняет сервер. Клиент видит «пустой экран», вы — ничего. Sentry закрывает именно эту слепую зону.

2. Uptime-мониторинг: базовый уровень

Это то, с чего начинают все. Сервис раз в минуту делает HTTP-запрос на ваш сайт и проверяет код ответа. Если ответ не 200 — приходит алерт в Telegram, SMS, email.

Что выбрать: для простых случаев достаточно UptimeRobot или Better Stack. Оба дают бесплатный тариф с проверкой каждые 5 минут и 50 мониторов. Если нужны проверки каждую минуту и неограниченные алерты — платный тариф стоит символических денег.

Что проверять:

  • Главную страницу — она всегда должна отдавать 200.
  • Страницу с формой заявки — она критична для бизнеса.
  • Страницу авторизации, если есть личный кабинет.
  • API-endpoint, если сайт — это приложение с бэкендом.
Что не сработает: проверка одного URL раз в 15 минут. Если сайт упал в 14:00, а проверка в 14:15 — вы узнаете только в 14:15, и клиенты уже ушли. Проверка каждые 1–5 минут — оптимальный баланс.

3. Метрики сервера: видеть приближение проблемы

Uptime-мониторинг скажет, что сайт упал. Метрики сервера — предупредят об этом заранее. Загрузка процессора 95% в течение часа — сигнал, что скоро что-то сломается. Свободное место на диске 5% — «через два дня база данных перестанет писать».

Стандартный стек — Prometheus для сбора метрик и Grafana для отображения. Prometheus раз в 15 секунд собирает данные с сервера, Grafana рисует графики в реальном времени. Если значение превышает порог — Prometheus через Alertmanager присылает алерт.

Что обязательно отслеживать:

# Пример правил для Prometheus
- alert: HighCPUUsage
  expr: node_cpu_seconds_total{mode="idle"} < 10
  for: 5m
  annotations:
    summary: "CPU загружен более 90% в течение 5 минут"

- alert: LowDiskSpace
  expr: node_filesystem_avail_bytes / node_filesystem_size_bytes < 0.10
  for: 1h
  annotations:
    summary: "Свободно менее 10% места на диске"

- alert: HighMemoryUsage
  expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.15
  for: 10m
  annotations:
    summary: "Свободно менее 15% памяти"

Если не хочется поднимать Prometheus и Grafana, есть более лёгкие альтернативы — Netdata или Zabbix. Netdata устанавливается одной командой и сразу показывает красивые графики. Для одного сервера этого часто достаточно.

4. Метрики приложения: задержки и ошибки

Сервер работает, сайт открывается — но пользователи жалуются на медленную работу. Это уже не про uptime, а про качество. Здесь помогают метрики приложения:

  • RPS (запросов в секунду). Сколько трафика держит приложение. Резкий рост — возможен наплыв или атака.
  • Средняя и p95-задержка. p95 — это «95% запросов обрабатываются быстрее, чем X миллисекунд». Если p95 растёт — пользователи чувствуют замедление, даже если среднее в норме.
  • Процент ошибок 5xx. 5xx — это «сервер сломался». Даже 1% — это серьёзно: из 1000 посетителей 10 увидели ошибку.
  • Медленные SQL-запросы. Если запрос к базе выполняется больше секунды — это сигнал для оптимизации. Такие запросы обычно и есть причина медленной работы сайта.

5. Отлов ошибок: Sentry

Самая коварная категория проблем — ошибки, которые не роняют сайт. Пользователь нажал кнопку, форма не отправилась, он ушёл к конкуренту. В логах сервера — тишина. Sentry ловит именно такие случаи.

Sentry — это сервис для отлова ошибок в приложениях. Он подключается как библиотека в код, перехватывает исключения и отправляет их на сервер с полным контекстом: стек вызовов, значения переменных, браузер пользователя, URL страницы.

Как это выглядит в коде (Python):

import sentry_sdk
sentry_sdk.init(
    dsn="https://...@sentry.io/...",
    traces_sample_rate=0.1,
)

# Теперь любая непойманная ошибка
# автоматически отправится в Sentry
# с полным стеком вызовов

У Sentry есть облачная версия (Sentry.io) и self-hosted. Облако бесплатно до 5 000 ошибок в месяц — для большинства проектов хватит с запасом. Self-hosted требует сервер, но зато данные хранятся у вас.

Альтернативы: для маленьких проектов хватит простого логирования через error_log в PHP или tracing в Rust. Но Sentry даёт то, чего нет у обычных логов — группировку похожих ошибок, отправку алертов и удобный интерфейс для просмотра.

6. Алерты: куда и когда присылать

Мониторинг бесполезен, если алерты приходят в место, которое никто не проверяет. Или если их так много, что на них перестают обращать внимание.

Куда присылать:

  • Telegram-бот или выделенный канал — для команды.
  • SMS для критичных алертов — если сайт лежит ночью.
  • Email — для дневных сводок и менее срочных уведомлений.
Главное правило: алерт должен быть полезным. Если мониторинг присылает 50 уведомлений в день, вы перестанете на них смотреть. Настраивайте пороги так, чтобы алерт приходил только тогда, когда действительно нужно реагировать.

Мониторинг — это страховка. Стоимость настройки — несколько часов, стоимость сервисов — несколько сотен рублей в месяц. Стоимость часа простоя сайта для бизнеса с оборотом в 500 000 ₽ в месяц — примерно 700 ₽. Но проблема не в самих деньгах, а в упущенных клиентах, которые один раз не смогли оставить заявку и ушли к конкуренту.

Настроим мониторинг под ключ

Развернём систему мониторинга, настроим алерты в Telegram, научим реагировать на типовые проблемы. От 5 000 ₽ + поддержка.