Управление и мониторинг сервера через Telegram бота

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Являюсь разработчиком в фирме которая занимается автоматизацией и телемеханизацией промышленных объектов. В мои обязанности входит разработка и поддержка ПО верхнего уровня, администрирование сервера и обеспечение его бесперебойной работы. Обычно ПО работает стабильно, но временами бывают сбои (по причинам не зависящим от нашего софта), о которых я иногда узнаю с большим опозданием. Было решено, что нужна система мониторинга, которая будет оповещать меня и руководство о проблемах, для возможности их быстрого устранения. Кроме того хотелось бы иметь возможность оперативно устранить проблему, даже если «под рукой» нет ПК.


Администрируемый сервер располагается у заказчика и я имею ограниченные возможности по подключению к нему (RDP и HTTP).

Рисунок 1 - Упрощенная схема сети.
Рисунок 1 - Упрощенная схема сети.

Это скорее всего ставит крест на стандартных системах мониторинга. Поэтому я решился написать свою микросистему с возможностью управления сервером. На Python написал Web сервис который выполняет определенные  действия по заданным URL, и  Telegram бота который опрашивает этот Web сервис.

Рисунок 2. - Схема работы мониторинга через Telegram бота.
Рисунок 2. - Схема работы мониторинга через Telegram бота.

На данный момент Web сервис умеет по настройкам пользовательской конфигурации:

  • выполнять запросы к различным БД;

  • выдавать информацию о:

  • загрузке процессора;

  • загрузке ОЗУ;

  • свободном месте на дисках.

  • выполнять скрипты и программы;

  • управлять службами.

Telegram бот тоже конфигурируется и может:

  • опрашивать сервер с определенной периодичностью (для реализации мониторинга) и выполнять рассылку изменений в чаты;

  • формировать меню на основании настроек и прав доступа;

  • опрашивать сервер на основании выбранного пункта меню и формировать ответ;

  • запрашивать пароль для дополнительной авторизации для выполнении критических операций ( MD5 хеш пароля  пользователей  хранится в конфигурации, не забываем чистить сообщения после ввода пароля).

Мониторинг поддерживает:

  • три типа событий:

    • норма (наклонный шрифт);

    • предупреждение (подчеркнутый шрифт);

    • тревога (жирный шрифт).

  • оповещения на основании запросов к базам данных;

  • оповещения о работе служб;

  • оповещения о загрузке ресурсов сервера (процессор, ОЗУ, диски).

Рисунок 3 - Демонстрация работы системы мониторинга.
Рисунок 3 - Демонстрация работы системы мониторинга.

Работает система пока только на Windows системах и написана на Python 2.7. Под Python 3.x тоже должно работать, нужно только в файлах requiremets.txt убрать версии подключаемых модулей.

Быстро изложу как запустить эту систему:

  1. Скачиваем проект https://github.com/NenashevSV/TeSeMoMa;2.

  2. На машине которую нужно мониторить:

    1. Если нет то установить веб сервер поддерживающий WSGI и Python (они должны быть одной разрядности);

    2. На диск переписываем папку WebWorker;

    3. Настраиваем на нее веб сервер;

    4. Открываем командную строку, переходим в папку  WebWorker и выполняем:

      1. ‘pip install virtualenv’ - устанавливаем программу создания виртуального окружения;

      2. ‘virtualenv env’  - создаем виртуальное окружение;

      3. ‘env/Scripts/activate.bat’ - активируем виртуальное окружение;

      4. ‘pip install -r requirements.txt’  - устанавливаем зависимости;

    5. Настраиваем файл settings.php. (Там думаю все понятно будет)

    6. Выполняем проверку по адресу http://хост/путь_до_WSGI.py/имя_настройки/имя_пункта/{имя_под_пункта/..../}имя_действия например http://localhost/WebWorker/hardware/cpu на что должны получить примерно такой ответ: «{"message": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432 \u043d\u043e\u0440\u043c\u0435 (\u043e\u0442 0 \u0434\u043e 85 %)", "type": 0}»

  3. На машине с которой будем мониторить (может быть та же самая машина):

    1. Переписываем на диск папку «Observer».Если нет то устанавливаем Python;

    2. Открываем командную строку, переходим в папку  Observer и выполняем:

      1. ‘pip install virtualenv’ - устанавливаем программу создания виртуального окружения;

      2. ‘virtualenv env’ - создаем виртуальное окружение;

      3. ‘env/Scripts/activate.bat’ - активируем виртуальное окружение;

      4. ‘pip install -r requirements.txt’ - устанавливаем зависимости;

    3. Регистрируем бота через Telegram бота @BotFather (пишем ему /start и дальше действуем согласно описания);

    4. Настраиваем файл settings.php. Там много комментариев должно быть понятно;

    5. Запускаем start.bat (для постоянной работы рекомендую зарегистрировать как службу например программой nssm https://pc.ru/articles/zapusk-prilozheniya-kak-sluzhbu-windows);

    6. Для запроса меню отправить боту знак вопроса «?», для авторизации «pass ваш_пароль».

Вот и все, рад буду если проект кому либо пригодится.

Источник: https://habr.com/ru/post/597377/


Интересные статьи

Интересные статьи

Коды Spotify подобны QR-кодам. Их можно генерировать для того, чтобы делиться песнями, исполнителями, плейлистами и пользователями. Я решил разобраться в принципе их действия, в результате чего прод...
Команда Хабра и ЭКОПСИ начинает второе исследование IT-брендов работодателей. Исследование будет полезно кадровым и маркетинговым департаментам компаний, которые вливаютс...
Новый режим GKE более дорогой и менее гибкий, но зато проще и безопаснее Автопилот в GKE управляет подами за вас О кластерах Kubernetes хорошо известны две вещи. Первое, что это аб...
Это руководство посвящено настройке защиты приложений с помощью TLS-аутентификации. При таком подходе возможность работы пользователей с приложением зависит от имеющихся у них сертификато...
Этот пост вырос из комментария к одной статье здесь, на Хабре. Вполне обычного комментария, разве что сразу несколько человек сказали, что было бы очень хорошо оформить его в виде отдельного пост...