Данный проект предоставляет функционал для оповещения пользователей о каких-то событиях (например, об алертах в Prometheus, открытых PR's на Github, либо сообщения, генерируемые скриптом). Пользователь может получить оповещение несколькими способами: Telegram-бот (реализовано в проекте) или свой скрипт-потребитель сообщений.
Принцип действия (configuration.run):
- сообщения, сгенерированные готовыми или своими продьюсерами (сущность, создающая сообщения) могут быть обработаны фильтрами и отправлены в консьюмеры (сущность, принимающая сообщение). Данный процесс сохраняется как конфигурация, и может быть запущена вручную либо по расписанию, либо вручную. Конфигурацию необходимо создать предварительно перед созданием расписания для него.
- Конфигурация может быть создана и запущена через REST API или через GraphQL
- Сервер может быть горизонтально масштабирован посредством увеличения количества воркеров для celery.
- Как продюсер, так и консьюмер можно написать и добавить через административную панель
Основные использованные фреймворки:
- Django v3.1
- Celery v5
- Django REST API v3.12
- GraphQL v2.1
TODO:
- Переделать USERNAME_KEY в ADDITIONAL_INFO_KEY, после чего уже там искать 'username', и прочие ключи
- Переделать взятие инфы из продюсеров и консьюмеров в configuration.run на celery jobs
- Прикрутить консьюмер (vk)
- Прикрутить продюсер (redash) - на основе sql запроса генерация сообщения
- Прикрутить продюсер (prometheus) - на основе созданных алертов генерация сообщений
- Кастомизировать формат сообщений (текущий формат сделать как default)
- На сладкое
- Разобраться, как отдавать статичные файлы при DEBUG = false, отключить дебаг
- Прикрутить Nginx
- Зарезолвить все возникшие TODO
- Написать нормально ридми. Хотя бы раз в жизни
- Сделать документацию
- Как написать свой продюсер\консьюмер
- Как написать свой фильтр и подключить его
- Попросить пару людей почитать, понятно ли
- Прочитать самому спустя полгода