Статус-страница: лучшие практики
Коротко. Статус-страница — это публичная витрина доступности вашего сервиса. Хорошая страница снижает нагрузку на поддержку во время инцидента, повышает доверие и даёт пользователям ответ раньше, чем они напишут в чат. Плохая — обновляется вручную, всегда показывает «всё хорошо» и теряет доверие после первого же скрытого сбоя. Разница не в дизайне, а в честности, своевременности и автоматизации.
Зачем вообще нужна статус-страница
Когда сервис лежит, пользователи не знают, что сломалось: ваш сайт, их интернет или что-то посередине. В отсутствие информации они идут в поддержку, в соцсети и к конкурентам. Статус-страница перехватывает этот поток и даёт один источник правды.
- Снижает нагрузку на поддержку. Один баннер «знаем о проблеме, чиним» экономит десятки одинаковых тикетов.
- Сохраняет доверие. Признанный вовремя инцидент выглядит профессиональнее, чем скрытый и вскрывшийся.
- Даёт историю. Аптайм за 90 дней и архив инцидентов — это аргумент в переговорах и доказательство надёжности.
Пользователи прощают сбои. Они не прощают молчание. Статус-страница, которая честно говорит «у нас проблема», укрепляет доверие сильнее, чем страница, которая всегда зелёная.
Правило №1: автоматизация вместо ручных апдейтов
Статус-страница, которую обновляют руками, бесполезна именно в тот момент, когда нужна: во время инцидента дежурный занят тушением пожара, а не редактированием страницы. Поэтому компоненты должны привязываться к реальным мониторам.
В enterno.io вы помечаете монитор флагом «показывать на статус-странице», и его состояние автоматически отражается публично. Упал монитор — компонент стал красным без вашего участия. Восстановился — снова зелёный. Человек подключается только для текстового комментария к инциденту, а сам факт сбоя фиксируется системой.
Правило №2: компоненты, понятные пользователю
Разбивайте сервис на компоненты так, как их видит пользователь, а не как устроена ваша инфраструктура. «API документацию», «Дашборд», «Отправка email», «Платежи» — понятно. «Под kubernetes воркер-нода-7» — нет.
| Плохой компонент | Хороший компонент | Почему |
|---|---|---|
| db-replica-eu-2 | Авторизация | Пользователь не знает вашу схему БД |
| nginx-ingress | Веб-сайт | Описывает функцию, а не технологию |
| queue-worker | Отправка уведомлений | Понятно, что именно затронуто |
Правило №3: честные уровни деградации
Доступность не бинарна. Между «всё работает» и «всё лежит» есть промежуточные состояния, и пользователю важно их различать:
- Operational — всё в норме.
- Degraded performance — работает, но медленно или частично.
- Partial outage — часть функций недоступна.
- Major outage — компонент полностью лёг.
«Degraded» — самый недооценённый статус. Если API отвечает, но за 5 секунд вместо 200 мс, технически он «up», но для пользователя сломан. Честный «degraded» лучше зелёного, который врёт.
Правило №4: дайте подписаться
Не все будут постоянно держать открытой вашу статус-страницу. Подписки решают это: пользователь оставляет email и получает уведомление, когда вы открываете или закрываете инцидент. Это превращает пассивную страницу в активный канал коммуникации и снова разгружает поддержку.
Правило №5: встраивайте статус туда, где его увидят
Статус-страница на отдельном поддомене — это хорошо, но эмбед-бейдж в шапке вашего приложения или в документации работает ещё лучше: пользователь видит зелёный индикатор, не уходя со страницы. enterno.io отдаёт бейджи в формате SVG, совместимом с shields.io.
Простейший вариант — вставить картинку-бейдж напрямую:
<a href="https://enterno.io/status/your-slug">
<img
src="https://enterno.io/api/badge.php?monitor=123&type=status"
alt="Статус сервиса">
</a>
Бейдж обновляется сам и ведёт на полную статус-страницу по клику. Доступны типы: статус, аптайм, время отклика, дни до истечения SSL. Параметр ?powered=1 добавляет ненавязчивую подпись «Powered by enterno.io».
Правило №6: кастомный домен и брендинг
Статус на адресе вида status.вашдомен.ру выглядит как часть продукта, а не как сторонний сервис. enterno.io поддерживает публичные статус-страницы с кастомным доменом и встраиваемыми бейджами, так что пользователь остаётся в вашем бренде.
Чего избегать
- «Вечнозелёная» страница. Если за год не было ни одного инцидента, пользователи решат, что страница просто не работает.
- Технический жаргон в описании инцидента. Пишите для человека: что не работает и что вы делаете.
- Отсутствие постмортема. После крупного сбоя короткое объяснение причины восстанавливает доверие. Как его выстроить — в плане реагирования на инциденты.
- Статус-страница на той же инфраструктуре, что и сервис. Если она лежит вместе с продуктом — толку ноль.
Частые вопросы
Где должна жить статус-страница?
В идеале — на инфраструктуре, независимой от вашего основного сервиса. Если статус-страница падает вместе с продуктом, она бесполезна именно в момент инцидента. Размещение у внешнего провайдера мониторинг сайтов решает эту проблему по определению.
Нужно ли показывать каждый мелкий сбой?
Показывайте то, что заметит пользователь. Перезапуск одного воркера, который никто не почувствовал, — шум. Деградация, влияющая на реальных людей, — обязательно. Ориентир: если по этому поводу мог бы прийти тикет, это стоит на странице.
Как часто обновлять статус во время инцидента?
Лучше регулярно, чем подробно. Короткое «всё ещё работаем над этим» каждые 30 минут ценнее, чем тишина с обещанием большого финального поста. Молчание пользователи трактуют как «их бросили».
Можно ли встроить бейдж в README на GitHub?
Да. SVG-бейдж — это обычная картинка, она вставляется в markdown точно так же, как бейдж сборки или покрытия тестами. Это удобно для open-source проектов и публичных API.
Доступны ли статус-страницы на бесплатном плане?
Публичные статус-страницы доступны для ваших мониторов. На бесплатном плане enterno.io вы получаете 10 мониторов и можете выводить их на статус-страницу; кастомный домен и расширенные опции брендинга — на платных планах.
Создайте статус-страницу за пять минут
Откройте раздел Мониторы, отметьте нужные мониторы флагом «показывать на статус-странице» и настройте публичный адрес. Дальше — добавьте подписки, вставьте эмбед-бейдж в шапку приложения и подключите кастомный домен.
Чтобы статус-страница работала в связке с остальным мониторингом, загляните в руководство по мониторингу сайтов, гайд по uptime-мониторингу и лучшие практики алертинга — статус-страница это публичное лицо данных, которые они собирают.