Не подскажете ли best practices по алгоритму уведомлений об ошибках?
Есть сервис функционального тестирования сайтов. Он отвечает на вопрос «не сломался ли сайт» для сотни доменов. Нужно приделать к нему уведомления через SMS и звонки. Не могу придумать алгоритм, по которому эти уведомления отправлять.
Требования примерно такие:
— вовремя уведомлять;
— достучаться до человека, даже если он упоротый пляшет на концерте Prodigy;
— экономить деньги за отправку sms и звонки;
— не заспамить человека, когда он уже знает о проблеме;
— не упустить что-то важное.
Ситуаций когда, что-то может пойти не так, настолько много, что я не берусь придумать надежное решение. Хотелось бы использовать чужой алгоритм, проверенный на практике.
Понятно, как решать проблему, если есть посменное дежурство на рабочем месте. В данном случае система должна работать в условиях, когда «дежурный» может спать или находиться в метро, например. Это одно из условий задачи.
Под «не упустить что-то важное» я понимаю, скорее, ситуацию, когда мониторинг считает «всё ok, уведомление доставлено, лимит уведомлений исчерпан», а через 5 минут падают еще 10 серверов.
> когда «дежурный» может спать или находиться в метро, например
Пока дежурный не подтвердил в zabbix, или какой либо другой системе, что он узнал о проблеме sms шлется каждые 2-5 минут + эскалация на более высокие должности: Team Lead -> PM -> CTO.
> лимит уведомлений исчерпан
Это бизнес проблема. Жлобиться на sms, ну, я не знаю даже...
Как вариант можете заюзать https://telegram.org/ и написать для него бота, который будет слать сообщения, но это потребует постоянного подключения к Internet.
HipChat, как и Telegram, работает, когда получатель регулярно проверяет сообщения. По умолчанию они не требуют внимания. Мне же нужно, чтобы в случае серьезных проблем мониторинг звонил мне в телефон. И повторял звонок каждые 5 минут (на случай, если я в шумном помещении).
Вам придется чем-то жертвовать в любом случае. Проблему выключенного телефона, или находящегося в другой комнате, или не услышанного звонка вы не решите, от слова совсем.
В том же Zabbix была возможность подключения GSM-модема, в т.ч. для отправки SMS. Но всегда можно сделать с костылями. Класть уведомления в какой-то файлик, скрипт будет этот файлик парсить, например раз в 5-10 секунд и в случае изменения отправлять смс через gsm-модем уже сторонними сервисами. Такая реализация убога, но можно и так.
Также можно и звонки отправлять с заранее записанными шаблонами под разные типы неисправностей, либо под разные интенсивности алярмов.
Но как и написал index0h - полностью гарантировать доступность информации не получится от слова Совсем. Вам в любом случае придется настраивать уведомления на других людей: друзей, семью, соседскую собаку. Иначе вы можете быть в душе, когда произойдет инцидент, потом сразу не посмотреть на телефон.. Телефон может быть разряжен, а вы где-нибудь в кино-/ театре, музее, пьете с друзьями.
По большому счету, здесь вопрос личной ответственности.