Этот проект представляет собой бэкенд для интеллектуального ChatOps-бота, предназначенного для управления инцидентами в Kubernetes. Бот получает алерты от Prometheus Alertmanager, сохраняет их в базу данных и предоставляет многоуровневый интерфейс для их расследования и устранения через Telegram.
- Telegram Gateway: Монолитный сервис на Go.
- База данных: Локальная SQLite (
chatops.db) для хранения пользователей и инцидентов. Предоставлена тестовая. - Миграции: Управляются с помощью
golang-migrate/migrate. - Веб-фреймворк:
chiдля роутинга HTTP-запросов. - Telegram Bot Framework:
telebot/v3. - ORM:
GORMдля взаимодействия с базой данных.
- Прием вебхуков от Alertmanager: Автоматическое создание инцидентов на основе алертов.
- Персистентное хранилище: Пользователи и инциденты сохраняются в базе данных SQLite.
- Гибридный UX: Реализовано два сценария взаимодействия:
- "Быстрый путь" (Two-Click Workflow): На главном экране инцидента бот предлагает 2-3 наиболее вероятных действия для решения проблемы, сгенерированных на основе лейблов алерта.
- "Глубокое погружение" (Drill-Down): Пользователь может "провалиться" от инцидента к списку затронутых ресурсов (например, деплойментов), оттуда — к списку их подов, и для каждого пода выполнить специфичные действия (
посмотреть логи,описать,удалить).
- Жизненный цикл инцидента: Инциденты имеют статусы (
active,resolved,rejected) и полный, неизменяемый лог аудита всех выполненных действий.
- Go 1.24+
make(опционально, для удобства)
git clone <URL_РЕПОЗИТОРИЯ>
cd chatops-botgo mod tidy-
Настройка переменных окружения: Создайте файл
.envв корне проекта, скопировав.env.example:cp .env.example .env
Откройте файл
.envи укажите ваш токен для Telegram-бота:TELEGRAM_BOT_TOKEN="your-telegram-bot-token" -
Настройка основного конфигурационного файла: Все остальные настройки приложения хранятся в файле
config.json.-
Создайте файл конфигурации: Скопируйте
config.example.jsonвconfig.json.cp config.example.json config.json
-
Отредактируйте
config.json: Откройте файлconfig.jsonи укажите необходимые параметры:telegram.alert_channel_id: ID вашего Telegram-канала для оповещений.server.webhook_token: Секретный токен для аутентификации Alertmanager.
-
go run cmd/chatops-bot/main.go --config=config.jsonПри первом запуске будут автоматически применены миграции и создан файл chatops.db. Сервер API запустится на порту APP_PORT, а сервер для вебхуков — на ALERT_PORT.
/start: Показать приветственное сообщение./incidents: Показать список активных инцидентов./history: Показать список последних закрытых инцидентов./help: Набор комманд
При нажатии на инцидент бот покажет его детали и предложит варианты действий. Вы можете либо выбрать одно из предложенных действий ("быстрый путь"), либо перейти к исследованию затронутых ресурсов ("глубокое погружение"), чтобы выполнить более точечные команды.
Для проверки полного цикла получения и обработки алерта без настройки реального Alertmanager можно использовать специальный скрипт.
-
Запустите приложение, как описано выше.
-
Выполните скрипт в новом окне терминала:
./send-test-alert.sh
Скрипт отправит тестовый алерт на ваш локальный сервер. Вы можете изменить переменные
PORTиTOKENвнутри скрипта или установить переменные окруженияALERT_PORTиWEBHOOK_TOKEN. (можно без токенов) -
Проверьте результат в Telegram: после выполнения скрипта в боте должен появиться новый инцидент.