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

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

На данный момент Web сервис умеет по настройкам пользовательской конфигурации:
-
выполнять запросы к различным БД;
-
выдавать информацию о:
-
загрузке процессора;
-
загрузке ОЗУ;
-
свободном месте на дисках.
-
выполнять скрипты и программы;
-
управлять службами.
Telegram бот тоже конфигурируется и может:
-
опрашивать сервер с определенной периодичностью (для реализации мониторинга) и выполнять рассылку изменений в чаты;
-
формировать меню на основании настроек и прав доступа;
-
опрашивать сервер на основании выбранного пункта меню и формировать ответ;
-
запрашивать пароль для дополнительной авторизации для выполнении критических операций ( MD5 хеш пароля пользователей хранится в конфигурации, не забываем чистить сообщения после ввода пароля).
Мониторинг поддерживает:
-
три типа событий:
-
норма (наклонный шрифт);
-
предупреждение (подчеркнутый шрифт);
-
тревога (жирный шрифт).
-
-
оповещения на основании запросов к базам данных;
-
оповещения о работе служб;
-
оповещения о загрузке ресурсов сервера (процессор, ОЗУ, диски).

Работает система пока только на Windows системах и написана на Python 2.7. Под Python 3.x тоже должно работать, нужно только в файлах requiremets.txt убрать версии подключаемых модулей.
Быстро изложу как запустить эту систему:
-
Скачиваем проект https://github.com/NenashevSV/TeSeMoMa;2.
-
На машине которую нужно мониторить:
-
Если нет то установить веб сервер поддерживающий WSGI и Python (они должны быть одной разрядности);
-
На диск переписываем папку WebWorker;
-
Настраиваем на нее веб сервер;
-
Открываем командную строку, переходим в папку WebWorker и выполняем:
-
pip install virtualenv— устанавливаем программу создания виртуального окружения; -
virtualenv env— создаем виртуальное окружение; -
env/Scripts/activate.bat— активируем виртуальное окружение; -
pip install -r requirements.txt— устанавливаем зависимости;
-
-
Настраиваем файл settings.php. (Там думаю все понятно будет)
-
Выполняем проверку по адресу 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}»
-
-
На машине с которой будем мониторить (может быть та же самая машина):
-
Переписываем на диск папку «Observer».Если нет то устанавливаем Python;
-
Открываем командную строку, переходим в папку Observer и выполняем:
-
pip install virtualenv— устанавливаем программу создания виртуального окружения; -
virtualenv env— создаем виртуальное окружение; -
env/Scripts/activate.bat— активируем виртуальное окружение; -
pip install -r requirements.txt— устанавливаем зависимости;
-
-
Регистрируем бота через Telegram бота @BotFather (пишем ему /start и дальше действуем согласно описания);
-
Настраиваем файл settings.php. Там много комментариев должно быть понятно;
-
Запускаем start.bat (для постоянной работы рекомендую зарегистрировать как службу например программой nssm);
-
Для запроса меню отправить боту знак вопроса «?», для авторизации «pass ваш_пароль».
-
Вот и все, рад буду если проект кому либо пригодится.
ссылка на оригинал статьи https://habr.com/ru/post/597377/
Добавить комментарий