Интеллектуальная система анализа логов, которая связывает события ERROR → WARNING, совмещая rule-based словарь аномалий и ML‑модель. Проект поставляется с полноценной экосистемой: FastAPI, Streamlit UI, воркер очереди, realtime watcher и вспомогательный лаунчер для публичного доступа через ngrok.
- Точность уровня F1 = 1.0 на тестовых наборах, fuzzy matching с окном ±6 часов.
- Параллельная обработка батчей и realtime мониторинг до 10 каталогов.
- Современный Streamlit UI с drag‑and‑drop, живыми графиками и экспортом в CSV/XLSX.
- REST API (
/api/v1), CLI и фоновые воркеры используют общую конфигурациюconfig.yaml. - Скрипт
serve_public.pyподнимает весь стек и публикует его через ngrok одной командой.
.
├── api/ # FastAPI приложение и схемы
├── interfaces/ # Streamlit UI и вспомогательные скрипты
├── realtime/ # Watcher для каталога логов
├── src/ # Ядро анализа, пайплайны, конфиги
├── serve_public.py # Главный лаунчер (FastAPI + Streamlit + worker + watcher + ngrok)
├── config.yaml # Единый конфигурационный файл
├── Dockerfile # Образ с предустановленными зависимостями
└── docker-compose.yml # Один сервис, запускающий `serve_public.py`
- Python 3.10+
pipи virtualenv/conda по желанию- Docker 24+ (для запуска через Compose)
- Аккаунт ngrok (рекомендуется токен для сессий > 60 минут)
git clone https://github.com/hackathonsrus/AtomizeML.git
cd AtomizeML
python -m venv .venv && source .venv/bin/activate # по желанию
pip install -r requirements.txtpython serve_public.py --share-api --ngrok-authtoken <YOUR_NGROK_TOKEN>Скрипт:
- запускает FastAPI на
http://localhost:8000; - поднимает Streamlit UI на
http://localhost:8501; - включает фоновый worker и realtime watcher (отключаются флагами
--no-worker,--no-watcher); - создает ngrok‑туннели и выводит публичные URL (UI и, при
--share-api, REST API).
- Только Streamlit UI:
python interfaces/run_streamlit.py - Только API:
uvicorn api.app:app --host 0.0.0.0 --port 8000 - CLI:
python cli.py --help
Все сервисы читают config.yaml и автоматически создают каталоги runtime/*.
- Создайте
.envрядом сdocker-compose.ymlи добавьте строку:(Без токена туннель будет жить ~2 часа, UI всё равно запустится локально.)NGROK_AUTHTOKEN=<YOUR_NGROK_TOKEN> - Соберите и запустите стек:
docker compose up --build
- Логи:
docker compose logs -f, остановкаCtrl+Cилиdocker compose down.
Контейнер по умолчанию выполняет python serve_public.py --share-api. Он прокидывает порты 8501 (Streamlit) и 8000 (FastAPI) наружу и монтирует:
./data → /app/data(read-only, справочники и датасеты),./models → /app/models(read-only, ML‑артефакты),./config.yaml → /app/config.yaml(общие настройки),./runtime → /app/runtime(рабочее состояние, создается автоматически и исключён из git).
Чтобы отключить публикацию API, удалите --share-api из command в docker-compose.yml или переопределите команду:
docker compose run --rm atomizeml --no-worker --no-watcherpytestПеред запуском тестов убедитесь, что виртуальная среда активирована и зависимости установлены.
config.yaml— единая точка для путей, профилей анализа и алиасов мониторинга. Изменения подхватываются на лету.- Результаты анализов и очереди задач попадают в
runtime/и игнорируются git. При необходимости очистите каталог перед следующими запусками. - Для работы realtime мониторинга добавьте каталоги в
config.yamlили воспользуйтесь UI. - Если Streamlit или API недоступны в контейнере, убедитесь, что порты 8000/8501 не заняты на хосте и токен ngrok валиден.
Проект распространяется под лицензией MIT. Подробности в файле LICENSE (если присутствует).