Система уведомления об аварийных ситуациях в 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
После получения сообщения мы проверяем, действительно ли произошел сбой или это ложная тревога. И далее принимаем необходимые меры и устраняем поломку.
Добавление системы мониторинга системы и сигнализации позволило нам оперативно устранять мелкие неисправности и уменьшить количество глобальных сбоев.