Когда сторож умирает: почему тишина не хорошая новость
Неделями ни одного письма с предупреждением. Объяснений два, и снаружи они выглядят одинаково: либо всё в порядке, либо сторож умер.
AtlasPVE ·
Эта статья отвечает на
- proxmox не приходят письма с оповещениями
- proxmox уведомления по почте не работают
- как понять что мониторинг proxmox работает
- proxmox проверить настройки smtp
- proxmox сервер упал а я не узнал
Вы настроили оповещения. Прошли недели, и не пришло ни одного письма.
Объяснений два. Либо действительно ничего не случилось, либо система оповещений перестала работать, а вы об этом не знаете. Снаружи эти два случая выглядят одинаково.
А человеческий разум склонен читать тишину как хорошую новость. Именно поэтому такой класс неисправностей живёт месяцами незамеченным.
Это не то же самое, что замолчавшая проверка
В другой статье этой вики мы писали: если проверка не может прочитать свои данные, она не должна молчать, она должна сказать, что не смогла прочитать.
То, о чём здесь идёт речь, стоит на ступень выше. Там замолкала проверка внутри работающего сторожа. Здесь самого сторожа нет. Не осталось никого, кто говорит, а значит, и никого, кто скажет «не смог прочитать».
Как сторож умирает тихо
Служба останавливается. Обновление, падение, нехватка памяти. То, что должно было вам сообщить, и есть то, что остановилось.
Рвётся почтовый путь. Меняется пароль, провайдер блокирует, адрес возвращает письмо. Сторож продолжает работать, пишет свои сообщения, и ни одно до вас не доходит. Это самый обманчивый случай, потому что со стороны сервера всё выглядит здоровым.
Кто-то выключил и забыл. Уведомления выключают временно, пока разбираются с чем-то. Проблему решают. Уведомления остаются выключенными.
Машина выключается. Крайний случай: ничего не сломано, просто всё молчит.
У всех четырёх общее одно: ни один не порождает сообщения. А если ваш способ замечать неисправность это получение сообщения, то неисправности без сообщения для вас невидимы.
У решения другая форма: не тревога, а сердцебиение
Направление нужно развернуть.
Тревога говорит: сообщи, когда что-то не так. Сердцебиение говорит: через равные промежутки говори «я жив», даже когда ничего не происходит. А затем пусть кто-то заметит, когда это говорение прекратится.
Разница важна. Тревога это сообщение о проблеме; сердцебиение это сообщение о самом вестнике. Они отвечают на разные вопросы, и одно не заменяет другое.
Как только появляется сердцебиение, смысл тишины меняется. Тишина теперь несёт сведения: то, что должно было говорить, молчит.
Тот, кто замечает, должен быть вне наблюдаемой машины
Вот та часть, на которой стоит задержаться. Машина не может сообщить о собственной смерти.
Место, которое оценивает сердцебиение, должно находиться вне наблюдаемого сервера: другая машина, телефон, внешняя точка. Проверка, работающая внутри сервера, выключается вместе с ним и никому ничего не говорит.
Хватит даже самого простого самодельного варианта: пусть сервер каждый час оставляет где-то отметку, а вы смотрите на возраст этой отметки. Сложная установка не нужна; нужно лишь одно, чтобы оценка происходила в другом месте.
У сердцебиения есть своя ловушка
Здесь кроется тонкая проектная ошибка, и в неё попадает большинство установок: привязать сердцебиение к расписанию того, что пользователь может выключить.
Допустим, оно делит расписание с ежедневной сводкой. Пользователь выключает сводку, потому что её оказалось слишком много. Сердцебиение прекращается вместе с ней. Внешняя сторона видит, что сигнал пропал, и поднимает тревогу «от вашего сервера нет вестей», хотя решительно ничего не происходит.
Итог вы угадаете: пользователь один раз пугается впустую, а во второй раз выключает тревогу. Ложная тревога, порождённая вашим же защитным механизмом, разрушает доверие к этому механизму быстрее, чем его полное отсутствие.
Правило: у сердцебиения должно быть собственное расписание, оно не должно опираться ни на что выключаемое.
Та же форма в другом месте
В статье о заданиях резервного копирования этой вики мы писали: смотрите не на состояние задания, а на возраст самой свежей копии.
Та же форма всплывает здесь: не спрашивайте систему оповещений, работает ли она, смотрите на возраст последнего сигнала. Состояние это утверждение, возраст это измерение.
И наконец, единственное, что нужно сделать в день настройки: намеренно вызовите неисправность и увидьте, как приходит письмо. Непроверенная тревога это не механизм, а надежда.
Что делает Atlas
Atlas Watch отправляет ежедневную сводку, о критических положениях сообщает сразу, не дожидаясь сводки, а рядом с этим выдаёт ежечасный сигнал «я жив».
Рассказать стоит о том, к чему этот сигнал не привязан.
Сигнал не опирается ни на расписание ежедневной сводки, ни на расписание тревоги. У обеих свои настройки, и пользователь может выключить любую. Если бы сигнал зависел от них, он прекратился бы в тот же миг, когда пользователь выключил сводку, и другая сторона сказала бы «от этого сервера нет вестей», хотя ничего не происходит. Поэтому у сигнала своё расписание.
Вторая деталь следует из той же мысли: пока настройка уведомлений выключена, файл расписания сигнала вообще не пишется. То есть не остаётся промежуточного состояния «включено, но не работает»; сигнал либо есть, либо нет.
Сам путь уведомлений ваш: вы указываете собственный почтовый сервер, и письмо уходит с вашего сервера. Отправка сигнала во внешнюю точку это необязательное дополнение, и работа продукта от него не зависит.
Общий вывод: защитный механизм не должен опираться на выключаемые части того, что он защищает. Если опирается, он тихо умирает вместе с этим.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.