Перейти к содержимому

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

Введение

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

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

Требования

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

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

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

$ apt-get update

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

$ apt-get install python3

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

$ wget https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py

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

$ pip install telepot
$ apt-get install python3-psutil
$ apt-get install python3-matplotlib

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

$ apt-get install git
$ git clone https://github.com/geekbeard/ServerStatsBot.git

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

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

$ cd ServerStatsBot

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

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

$ cp tokens.py_example tokens.py

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

$ nano tokens.py

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

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

# A token you get from the Telegram's botfather
telegrambot = 'токен, полученный от Bot Father'
# A chat_id of your client
adminchatid = [99999999]

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

$ python3 servstatsbot.py

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

root@XXXXXX:~/ServerStatsBot# python3 servstatsbot.py
Your chat_id:1234567

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

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

$ nano tokens.py

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

# A token you get from the Telegram's botfather
telegrambot = 'токен, олученный от Bot Father'
# A chat_id of your client
adminchatid = [ВАШ_CHAT_ID]

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

$ python3 servstatsbot.py

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

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

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

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

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

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

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

$ nano /etc/systemd/system/statsbot.service

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

[Unit]
Description=ServerStatsTelegramBot
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python3 /root/ServerStatsBot/servstatsbot.py
Restart=always
[Install]
WantedBy=multi-user.target

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

$ systemctl daemon-reload
$ systemctl enable statsbot.service

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

$ systemctl start statsbot.service

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

Заключение

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

Опубликовано вPython

Ваш комментарий будет первым

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *