1

Сторонние сервисы на страже вашего приложения. Самостоятельно админоботим

Столкнулся с такой ситуацией, что когда одновременно существует несколько сервисов, которые запущены на разных vps, и работа над этими сервисами в текущий момент времени особо активно не ведется, то при возникновении каких-либо проблем (вырубились все докер контейнеры или pm2 перестал поддерживать запущенный процесс), о данном факте узнаешь не сразу и приходится оперативно ручками через ssh и консоль лезть на впс и решать проблему. В большинстве случаев такие ситуации решаются банальным повторным запуском pm2 и докер контейнеров, но нервотрепка по итогу та еще, в общем, отстой.

Конечно, я посмотрел на готовые решения и из оказалось вагон и маленькая тележка.

А вот и они

А вот и они

Часть решений была в виде телеграм ботов, часть решений была специализированная. У специализированных решений для себя отметил следующие недостатки:
1) Разные инструменты для pm2 и докера. Смысл ради упрощения работы с vps устанавливать две программы и усложнять по итогу работу?

Смысл не найден

Смысл не найден

2) Излишний функционал на текущий момент готовых решений. Ирония, какого-то функционала нет, а какой-то излишний;

Палпатин дело говорит

Палпатин дело говорит

С телеграмм ботами все просто, такого и я могу написать и попрактиковаться.

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

Так и было…

Так и было…

Код представлять не буду, если проект покажет свою состоятельность и удобность, то просто выложу его в публичный доступ на гитхабе. А сейчас просто расскажу и покажу, что по итогу получилось. В первую очередь, админобот запускается в докер контейнере и абсолютно никак не связан с другими сервисами и приложениями.

Стартовое приветствие

Стартовое приветствие

Запущенные контейнеры

Запущенные контейнеры

Запущенный процесс в pm2

Запущенный процесс в pm2

Список контейнеров для перезапуска

Список контейнеров для перезапуска

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

  • Сейчас бот запускается в докер контейнере, если докер по какой-то причине упадет, вместе с ним упадет и админобот, проблема, надо как-то решать данную задачу. Есть парочка мыслей;

  • Добавить пинг, чтобы через определённый момент времени бот писал, что все процессы запущенны и корректно работают;

  • Добавить возможность запуска (не перезапуска) необходимых процессов, возможность выключения и сборки (build) контейнеров.

Вроде все, кажется, ничего не забыл.

Ну а так вроде все пацаны и пацанята, коты и котанята. Надеюсь, стало немножечко понятнее, что вообще в этом мире происходит. Ну и не забываем, я разработал чат-рулетку в виде мини-приложение в telegram, как говорится welcome t.me/Twittly_bot/twittly. Затестите, вам не сложно, мне приятно!!!))).

Ссылка на мой telegram канал t.me/socionyxchannel, you are welcome too, где я пишу про будни разработчика.