Я задолбался пропускать падения моих сервисов и написал HealthCheck-бота
Пишешь боту имя своего домена и бот проверяет его раз в минуту.
К идее создания бота я пришёл при запуске другого продукта для проверки резюме на английском -
В день запуска всё пошло не так😎
Ошибка #1
Большинство сервисов работали на одном сервере, а это
Запускал я довольно требовательный сервис к ресурсам - используется OCR (распознавание символов на pdf файле), алгоритм категоризации, нейронная сеть для определения насколько резюме соответствует профессии найденной по ключевым словам. В общем жирный сервис, который ест много ресурсов процессора и при превышении лимитов - он зависает намертво вместе с сервером.
Ошибка #2
После запуска я не особо следил за сервисом, занимался своими делами.
В итоге проблему с виртуальной машиной, где крутятся все мои сервисы я заметил только по комментариям от пользователей на ProductHunt.
А завис не только сервис, а вообще всё!
Приходилось перезагружать сервер и поднимать все сервисы, чтобы они ожили. Спасибо боту @IsBotDownBot - я понимал когда падали мои боты😂
Ошибка #3
В сервисе не было ограничений на количество загрузок резюме - в итоге кто-то отчаянно пытался получить высокий балл от https://checkcv.info/ и загружал резюме около сотни раз, это нагружало сервер и тоже приводило к падению сервера.
Решение
После 5 падений сервиса (довольно позорно, но что поделать) я начал искать быстрое решение для мониторинга, желательно бесплатное.
Небольшой ресерч не дал простого и быстрого решения, чтобы проверять свои сервисы по доменному имени, поэтому я написал своё решение - https://t.me/YourDomainHealthCheckBot
Просто отправляешь боту свой домен - например checkcv.info - бот сам определяет доступен ли сервис по HTTPS или HTTP и начинает его пинговать раз в минуту.
В случае ошибки или недоступности сайта - бот отправит сообщение об ошибке.
Как только сервис вернется к жизни - бот сообщит и об этом.
Вот в общем-то и все, так же можно редактировать свой список сайтов.
Ещё можно пингануть сайт один раз.
Кто-то подсказал, что этим ботом можно поднимать свои Heroku-сервисы к жизни.
С тех пор как запустил бота сервис пока не падал, но если упадёт узнаю об этом в течение минуты (если не упадёт сервер с ботом😏).
Буду рад услышать фидбек или предложения по улучшению -
Мне страшно пользоваться для мониторинга вашим сервисом, после того как вы рассказали, как вы сервисы запускаете. А по существу - выглядит как 3-колесный велосипед, в мире где существует Тесла. Нормальный мониторинг сервиса нормального сервиса на порядок сложнее.
тесла стоит дорого, у вас есть тесла?)
Это к дискуссии отношения не имеет. Я пытался сказать, что если вам нужен мониторинг для собственных проектов стоит погрузиться в тему, а там уже решить вы готовы делать похожий инструмент или стоит взять готовое решение и не тратить время на велосипед.
я не нашёл решения, которое подошло бы мне и написал, то что мне подходит, не вижу проблематики
«Проблематика» в том, что вы проблему не объяснили. Почему вам надо раз в минуту? Почему не раз в 3, или раз в 30 секунд? А без ответа на этот базовый вопрос непонятно чем это лучше все остальные инструменты, какую проблему вы решаете.
Тем более вы идёте в мониторинг, то есть должны хотя бы обещать более высокий SLA, чем сервисы которые собираетесь мониторить. А пока выглядит это пока как работа студента в Яндекс.Практикуме, которому рассказали про aiogram и requests и он за 30 строк кода сделал прототип.
может потому-что я выбрал эмпирически такую частоту дефолтной? вас такой вариант не устроит?)
sla у сервиса выше, так как крутится не на виртуалке, а в контейнере и менеджится облаком, т.е. там SLA уже облака идёт.
Чем вас так студенты яндекс.практикума разозлили?)