Система уведомления об аварийных ситуациях в InvariMatch

После того, как мы оптимизировали работу InvariMatch и добавили несколько новых возможностей, благодаря которым система смогла работать в кластере из нескольких машин, а поиск стал осуществляться гораздо быстрее, чем раньше, все работало исправно. Но время от времени все равно происходили сбои.

Простои и ошибки в высоконагруженных системах очень критичны. Чтобы сразу их исправлять, нам нужно узнавать о них как можно быстрее. Тогда мы и задумались о создании системы оповещения, которая бы проверяла ключевые параметры InvariMatch и уведомляла бы нас о наличии неисправностей.

18 июля 2017 года мы начали работать над созданием алгоритма, который бы автоматически проводил комплексную диагностику системы: проверял количество работающих поисковых ядер, ошибках во время сохранения данных ядра, контролировал объемы данных в ядрах и процесс обработки их на узлах, сообщал данные об отсутствии заданий в очереди, обрыве соединения с узлами системы, контролировал наличие свободного места на диске и уведомлял о сбоях в конфигурации системы и ошибках в процессе обработки данных.

На разработку ушло чуть больше месяца. Мы решили, что нам было бы удобнее всего получать оперативные сообщения о неисправностях через телеграм. Поэтому мы подключили к системе telegram-бота в, который слал нам уведомления в случае, если что-то работает не так. Выглядят они примерно таким образом:

[!]> Scan checking: — nothing has been scanning for three hours

[!]> Fault checking: — there are too many faults (about 100 %) in video processing for an hour


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

Добавление системы мониторинга системы и сигнализации позволило нам оперативно устранять мелкие неисправности и уменьшить количество глобальных сбоев.