Когда сторож умирает: почему тишина не хорошая новость

Неделями ни одного письма с предупреждением. Объяснений два, и снаружи они выглядят одинаково: либо всё в порядке, либо сторож умер.

AtlasPVE ·

Эта статья отвечает на

  • proxmox не приходят письма с оповещениями
  • proxmox уведомления по почте не работают
  • как понять что мониторинг proxmox работает
  • proxmox проверить настройки smtp
  • proxmox сервер упал а я не узнал

Вы настроили оповещения. Прошли недели, и не пришло ни одного письма.

Объяснений два. Либо действительно ничего не случилось, либо система оповещений перестала работать, а вы об этом не знаете. Снаружи эти два случая выглядят одинаково.

А человеческий разум склонен читать тишину как хорошую новость. Именно поэтому такой класс неисправностей живёт месяцами незамеченным.

Это не то же самое, что замолчавшая проверка

В другой статье этой вики мы писали: если проверка не может прочитать свои данные, она не должна молчать, она должна сказать, что не смогла прочитать.

То, о чём здесь идёт речь, стоит на ступень выше. Там замолкала проверка внутри работающего сторожа. Здесь самого сторожа нет. Не осталось никого, кто говорит, а значит, и никого, кто скажет «не смог прочитать».

Как сторож умирает тихо

Служба останавливается. Обновление, падение, нехватка памяти. То, что должно было вам сообщить, и есть то, что остановилось.

Рвётся почтовый путь. Меняется пароль, провайдер блокирует, адрес возвращает письмо. Сторож продолжает работать, пишет свои сообщения, и ни одно до вас не доходит. Это самый обманчивый случай, потому что со стороны сервера всё выглядит здоровым.

Кто-то выключил и забыл. Уведомления выключают временно, пока разбираются с чем-то. Проблему решают. Уведомления остаются выключенными.

Машина выключается. Крайний случай: ничего не сломано, просто всё молчит.

У всех четырёх общее одно: ни один не порождает сообщения. А если ваш способ замечать неисправность это получение сообщения, то неисправности без сообщения для вас невидимы.

У решения другая форма: не тревога, а сердцебиение

Направление нужно развернуть.

Тревога говорит: сообщи, когда что-то не так. Сердцебиение говорит: через равные промежутки говори «я жив», даже когда ничего не происходит. А затем пусть кто-то заметит, когда это говорение прекратится.

Разница важна. Тревога это сообщение о проблеме; сердцебиение это сообщение о самом вестнике. Они отвечают на разные вопросы, и одно не заменяет другое.

Как только появляется сердцебиение, смысл тишины меняется. Тишина теперь несёт сведения: то, что должно было говорить, молчит.

Тот, кто замечает, должен быть вне наблюдаемой машины

Вот та часть, на которой стоит задержаться. Машина не может сообщить о собственной смерти.

Место, которое оценивает сердцебиение, должно находиться вне наблюдаемого сервера: другая машина, телефон, внешняя точка. Проверка, работающая внутри сервера, выключается вместе с ним и никому ничего не говорит.

Хватит даже самого простого самодельного варианта: пусть сервер каждый час оставляет где-то отметку, а вы смотрите на возраст этой отметки. Сложная установка не нужна; нужно лишь одно, чтобы оценка происходила в другом месте.

У сердцебиения есть своя ловушка

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

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

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

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

Та же форма в другом месте

В статье о заданиях резервного копирования этой вики мы писали: смотрите не на состояние задания, а на возраст самой свежей копии.

Та же форма всплывает здесь: не спрашивайте систему оповещений, работает ли она, смотрите на возраст последнего сигнала. Состояние это утверждение, возраст это измерение.

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

Что делает Atlas

Atlas Watch отправляет ежедневную сводку, о критических положениях сообщает сразу, не дожидаясь сводки, а рядом с этим выдаёт ежечасный сигнал «я жив».

Рассказать стоит о том, к чему этот сигнал не привязан.

Сигнал не опирается ни на расписание ежедневной сводки, ни на расписание тревоги. У обеих свои настройки, и пользователь может выключить любую. Если бы сигнал зависел от них, он прекратился бы в тот же миг, когда пользователь выключил сводку, и другая сторона сказала бы «от этого сервера нет вестей», хотя ничего не происходит. Поэтому у сигнала своё расписание.

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

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

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

Источники

Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.

Похожие статьи

Как это выглядит внутри Atlas?

Перейти на страницу продукта