Шестнадцать продуктов и одна панель: как уследить за всем, когда ты один
У меня в проде шестнадцать собственных продуктов. Ассистенты, платформы с оплатой, витрины, инструменты. Команды сопровождения нет — всё держу сам.
И вот какая штука выяснилась довольно быстро: главная угроза такому хозяйству — не конкурент и не нагрузка. Главная угроза — тишина.
Что-то тихо перестало работать. Оплата не проходит. Сертификат истёк. База не отвечает. Внешне всё как обычно, а внутри уже сломано. И ты узнаёшь об этом не сам — тебе пишет клиент. Вот это самое дорогое, что может случиться: ты теряешь доверие в тот момент, когда мог бы просто починить.
Я не хотел жить в режиме «а вдруг что-то сломалось». Поэтому написал себе диспетчер — панель, которая следит за всем хозяйством вместо меня.
Что должна уметь такая панель
Задача звучит просто: покажи, что живо, а что нет. Но чтобы это реально работало, нужно несколько вещей.
Один список — источник правды. Все проекты живут в одном реестре: адрес проверки, описание, где хостится, на чём собрано, публичный он или приватный. Не в голове, не в заметках — в файле, который видят и панель, и я.
Автоматическая проверка по расписанию. Каждые тридцать секунд система сама стучится в каждый проект и смотрит на ответ. Не я раз в неделю вспоминаю проверить — а она проверяет постоянно.
Три честных состояния. Не «работает / не работает», а: онлайн, предупреждение, офлайн. Предупреждение важно отдельно — это когда сервис отвечает, но медленно или со странностями. Такое нельзя показывать красным, но и зелёным тоже нельзя.
История, а не только снимок. Мало знать, что сейчас всё хорошо. Нужно видеть, что сервис держит аптайм 99,8% за неделю — или что он падал трижды за сутки. Без истории любой сбой выглядит как случайность.
Почему я не взял готовое
Резонный вопрос — зачем писать своё, когда есть готовые мониторинги. Отвечу честно: для чужого продукта я бы взял готовое. Здесь мешали две вещи.
Первая: моё хозяйство разнородное. Часть проектов — публичные сайты, часть — приватные сервисы для семьи, часть — внутренние инструменты, которые вообще не должны светиться наружу. Готовые сервисы плохо дружат с «половину не показывать никому».
Вторая: мне нужна была своя логика статусов. Не сухие зелёные галочки, а понятная картина: сколько всего, сколько онлайн, сколько с предупреждением, сколько приватных, сколько личных. Панель, которую я открываю утром и за пять секунд понимаю состояние всего.
Своя панель вышла меньше, чем я потратил бы на подгонку чужой.
Что это даёт на практике
Самая заметная перемена — я перестал быть датчиком. Раньше любое «что-то не так» я ловил либо случайно, либо от клиента. Теперь ловит система, а я узнаю раньше, чем кто-либо пострадает.
Второе — разгрузка головы. Шестнадцать проектов — это шестнадцать поводов для беспокойства, если держать их в памяти. Когда состояние видно на одной панели, память освобождается под работу, а не под тревогу.
Третье, неочевидное — честность перед собой. Панель не даёт самообману: если сервис неделю держит 97%, это уже сигнал, даже если формально он «работает». Показывает не «всё ли хорошо», а «где тонко».
Почему это касается не только меня
Это свойство любого продукта, который дорос до продакшена. Пока вы делаете первую версию — вам не нужен мониторинг, вам нужен продукт. Но как только появляются реальные пользователи и деньги, тихий сбой становится очень дорогим.
И тут не обязательно заводить шестнадцать проектов, чтобы понять пользу. Достаточно одного, который приносит доход. Панель, которая следит за ним круглосуточно, окупается первым же инцидентом, который вы поймали раньше клиента.
Что я могу собрать вам
Такую панель я собираю как отдельную задачу. Обычно это:
- реестр сервисов — что, где, как проверять;
- автопроверка по расписанию с историей аптайма;
- понятный статус каждого сервиса: онлайн, предупреждение, офлайн;
- уведомления, когда что-то выходит из строя, — раньше, чем об этом узнает клиент;
- разделение публичного и приватного, если у вас есть закрытые сервисы.
Это не «мониторинг ради мониторинга». Это способ снять с себя роль датчика и передать её системе.
Пилот такой панели — две недели. Если у вас несколько сервисов и вы устали узнавать о сбоях от клиентов — напишите, посмотрим, что можно закрыть.