Бот вычитывает почту, находит письма с инцидентами и событиями мониторинга и отправляет уведомления в указанные чаты VK Teams.
Письма вычитывает из папок EXC_INC_FOLDER
и EXC_MON_FOLDER
(описание см. ниже) в соответствии с правилами в src/mail_handler.py
.
Вычитываются непрочитанные письма.
После обработки они отмечаются как прочитанные.
Уведомления отправляет в чаты указанные в перемненных окружения VKT_CHAT_ID
и VKT_MONITORING_CHAT_ID
(описание см. ниже).
Логи отправляются в чат VKT_ADMIN_ID
(описание см. ниже).
Имеется два варианта развёртывания сервера:
- с помощью Github Actions - позволяет автоматически переразвёртывать бота при пуше в ветку main, либо по нажатию кнопки в интерфейсе гитхаба
- ручной: не требует предварительной настройки репозитория, переразвёртывание при изменениях производится также вручную
- Создайте бота с помощью @metabot
- Создайте чаты или каналы, в которые бот будет скидывать логи и уведомления по инцидентам и мониторингу. Можно как разделить эти три сущности, так и валить всё в один чат (логи советую всё таки в отдельное место собирать, ибо их много).
- Добавьте в эти чаты бота и сделайте его админом. Если что-то будете отправлять не в чат/канал, а человеку (например логи себе), то нужно, чтобы этот человек первым написал боту. Просто любое сообщение.
- Форкаем репозиторий.
- Переходим в настройки репозитория → Secrets and Variables → Actions
- В Repository secrets добавляем следующие переменные:
SSH_PRIVATE_KEY
- приватный ключ для подключения к серверу;EXC_PASSWORD
- пароль от почтового ящика exchange;VKT_BOT_TOKEN
- токен бота VK Teams. Получать у @metabot.
- Переходим на вкладку Variables. Добавляем в Repository variables следующие переменные:
SERVER_IP
- адрес сервера, на котором будет развёртываться бот;SSH_USER
- пользователь на сервере бота;EXC_SERVER
- exchange сервер, что-то вродеhttps://db24-ews.<your_host>/EWS/Exchange.asmx
;EXC_EMAIL
- email почтового ящика exchange;EXC_USER
- имя пользователя exchange, напримерCORP\Username
;EXC_INC_FOLDER
- папка со входящими письмами об инцидентах..
для указания корневой папки "Входящие". Можно указать вложенные папки, путь будет определяться относительно папки "Входящие", напримерNotifications/Incidents
. Опциональный, при отсутствии письма будут вычитываться из "Входящих";EXC_MON_FOLDER
- папка со входящими письмами о событиях мониторинга. Правила такие же, как и дляEXC_INC_FOLDER
.VKT_BASE_URL
- VK Teams Bot API URL. Можно получить у @metabot. Обычноhttps://api.internal.myteam.mail.ru/bot/v1/
VKT_ADMIN_ID
- id чата, в который будут сыпаться логиVKT_CHAT_ID
- id чата, в который будут сыпаться уведомления об инцидентахVKT_MONITORING_CHAT_ID
- id чата, в который будут сыпаться уведомления мониторинга
- После этого всего переходим к верхней строке меню → Actions → в левой панели (Re)deploy bot on server → в правой панели Run workflow → Run workflow.
Если всё настроено правильно, то сервер начнёт развёртываться. Переразвернуть/перезапустить вручную можно кнопкой из п. 5.
- Склонируйте репозиторий к себе на сервер.
- Перейдите в директорию проекта.
- Создайте файл
.env
из шаблона.env.example
:cp .env.example .env
. - Внесите в .env файл необходимые данные. Описания переменных даны выше.
- Запустите
make update
. Если всё настроено правильно, то произойдёт запуск бота.
С помощью make можно управлять ботом:
make update
- утащить обновления из репозитория, пересобрать докер-образ, перезапустить бота из образаmake build
- пересобрать докер-образmake hard_restart
- снести работающий контейнер бота и запустить новый из образа