· 3 мин чтения

Слепой наблюдатель

Ночью сторож прислал «сайт недоступен». Сайт был жив — ослеп тот, кто смотрел. Разбираю, почему проверка должна отличать чужую поломку от собственной слепоты.

ИИавтоматизацияпрактика

Сегодня в четверть второго ночи машина, на которой живёт моя автоматика, перестала видеть внешний мир. Не упала: она работала, считала, запускала задачи по расписанию. Просто любое обращение наружу заканчивалось одинаково — не знаю такого адреса.

Дальше всё пошло по расписанию, и это самое интересное.

Что показывали отчёты

За ночь пять разных задач не сделали своего дела. Одна написала «новых сообщений нет» — то есть посмотреть не смогла, а отчиталась так, будто посмотрела и не нашла. Вторая упала с длинной ошибкой на полстраницы. Третья, мой сторож, который раз в шестнадцать минут проверяет сайты, в 01:25 прислал тревогу: недоступны все проверяемые адреса, сразу все.

В 01:44 он прислал то же самое, но другим тоном: «известная проблема, без тревоги». В 02:03 и 02:22 — снова «известно, молчим». В 03:29 — опять тревога.

Вот это поведение мне понравилось: первое появление проблемы кричит, а повторы — нет. Иначе к третьему часу я перестаю читать сообщения вообще.

Сайт в это время работал

Самое важное выяснилось не из отчётов. Я зашёл на машину, где стоит сам сайт, и посмотрел, что там происходило в те же часы: приходили люди, страницы им отдавались, обычная ночная жизнь. Сайт не молчал ни минуты.

Значит, «сайт недоступен» в отчёте означало не то, что написано. Означало оно: «я не могу до него дойти». Это две разные поломки. В первом случае чинить надо сайт, во втором — того, кто смотрит. Мой сторож всю ночь уверенно указывал на исправный объект.

И тревога тоже не дошла

Дальше — то, что задело сильнее всего. Канал, по которому такие сообщения должны были прийти мне в телефон, в ту же ночь лежал. Он живёт в том же интернете, который отключился. Сообщения встали в очередь «на потом» — крик был, а услышать его было некому.

Получается двойная тишина: объект жив, наблюдатель слеп, а голос наблюдателя идёт по той же линии, что и его глаза. Одна причина выключила и проверку, и оповещение о ней.

Что я поменял

Первое: проверка должна сначала убедиться, что видит сама. Если не отвечают сразу все адреса и все сервисы — дело почти всегда не в них, а в моём выходе наружу. Это надо писать в отчёте отдельной строкой, а не выдавать за вывод об объекте.

Второе: у тревоги должен быть второй путь, который не делит судьбу первого. Пусть неудобный, пусть через другую сеть. Иначе самая важная ночь окажется самой тихой.

Третье: ошибка не должна выглядеть как пустой ответ. «Ничего нет» и «не смог посмотреть» — разные новости, и вторая важнее первой.

Четвёртое: подавление повторов — правильная штука, но у «известной проблемы» должен быть срок. Иначе «знаю, молчим» превращается в привычку, а через неделю уже никто не помнит, что именно он знает.

Урок дня

Наблюдатель не может быть единственным свидетелем. Проверка, которая не отличает свою слепоту от чужой поломки, — не проверка, а способ успокоиться.

Тест на пять минут: возьмите любую свою проверку и ответьте, что она покажет, если у неё самой пропадёт связь. Если ответ «объект недоступен» — она врёт именно в тот момент, когда нужна. И второй вопрос: если замолчит канал, по которому она вам пишет, вы узнаете об этом откуда-нибудь ещё?

Ночью я этого не знал. Теперь знаю.

Это заметка из серии «Учусь»: я не пишу теорию — описываю то, что реально произошло в работе, вместе с ошибками.

Комментарии 0

Пока никто не высказался — будьте первым.

Есть вопрос по дереву или по проекту — напишите, отвечу сам.

ildare@ildare.ru