19 февраля 2020

Как получать информацию о состоянии сервера с помощью Telegram-бота ServerStatsBot

Введение

Telegram — один из самых популярных сегодня мессенджеров. Одной из самых интересных его особенностей является возможность создания специализированных сервисов на базе ботов.

В этой статье мы расскажем, как установить и настроить бота ServerStatsBot, с помощью которого вы сможете в любой момент получить актуальную информацию о работе серверов в Vscale: увидеть статистику потребления памяти, дискового пространства, получить информацию о загрузке процессора и т.п.

Требования

  • Debian 8 64bit;
  • пользователь с привилегиями root.

Установка бота

Обновим список пакетов в системе:

После этого установим Python3

Также нам потребуется система управления python-пакетами:

Для работы с ботом нужны библиотеки Telepot, Psutil и matplotlib. Установим их:

Вот и всё, все необходимые зависимости установлены.  Установим Git и клонируем репозиторий с ботом:

Настройка бота

Перейдём в директорию с исходным кодом бота:

Через Telegram обратимся к BotFather (так называется специальный бот, предназначенный для управления всеми остальными ботами) и получить у него токен. Этот токен нужно скопировать в файл tokens.py.

Выполним команду:

Откроем файл token.py в текстовом редакторе:

В качестве значения параметра telegrambot указываем токен, а параметр adminchatid пока что не меняем (о нём ещё пойдёт речь ниже). 

После внесения всех правок файл должен выглядеть так:

Сохраняем все изменения и запускаем бота:

Теперь нам нужно получить adminchatid.  Для этого отправим боту через Telegram любую команду (полный список команд опубликован здесь).  После этого на консоль будет выведено значения параметра adminchatid:

Бот может отправлять сообщения только обезличенно, по идентификатору чата.  Поэтому нам потребуется вставить полученное значение в файл tokens.py (заменить цифры 99999999). 

Остановим бота (Ctrl-C) и отредактируем этот файл:

После внесения всех изменений файл должен выглядеть так:

После этого бота можно запускать снова:

Теперь бот может отправлять сообщения непосредственно в чат администратору.

Управление ботом: основные команды

Бот может выполнять следующие команды:

  • /stats — выводит на консоль основную статистику сервера (аптайм, данные об использовании памяти и дискового пространства, статистику загрузки CPU);
  • /shell — предоставляет доступ к командной оболочке сервера и даёт возможность выполнять команды прямо через чат в Telegram;
  • /memgraph — отправляет в чат график потребления памяти;
  • /setmem — устанавливает лимит потребления памяти, по превышении которого будут рассылаться уведомления;
  • /setpoll — задаёт частоту опроса сервера в секундах.

Автозапуск бота

Сделаем так, чтобы при запуске сервера автоматически запускался и наш бот. 

Для этого обратимся к systemd и создадим для бота юнит-файл (так называются файлы, в которых прописаны настройки автозапуска):

Скопируем в него следующие строки:

Сохраним внесённые изменения и активируем новый сервис:

После этого можно запускать бота в режиме демона:

Теперь бот будет работать  даже после того, как мы выйдем из SSH-сессии. В случае какого-либо сбоя он будет перезапускаться автоматически.

Заключение

В этой статье мы научились устанавливать и настраивать бота ServerStatsBot. Теперь вы сможете в любой момент получать информацию о состоянии вашего сервера и даже выполнять простейшие задачи по удалённому администрированию с помощью смартфона или планшета.


Опубликовано 19.02.2020 от evgeniyalf в категории "Python