Skip to content

Ph1lsnow/AtomizeML

Repository files navigation

AtomizeML

Интеллектуальная система анализа логов, которая связывает события 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.txt

Полный стек с публичным доступом

python serve_public.py --share-api --ngrok-authtoken <YOUR_NGROK_TOKEN>

Скрипт:

  1. запускает FastAPI на http://localhost:8000;
  2. поднимает Streamlit UI на http://localhost:8501;
  3. включает фоновый worker и realtime watcher (отключаются флагами --no-worker, --no-watcher);
  4. создает 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/*.


Docker / Docker Compose

  1. Создайте .env рядом с docker-compose.yml и добавьте строку:
    NGROK_AUTHTOKEN=<YOUR_NGROK_TOKEN>
    
    (Без токена туннель будет жить ~2 часа, UI всё равно запустится локально.)
  2. Соберите и запустите стек:
    docker compose up --build
  3. Логи: 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-watcher

Тестирование

pytest

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


Полезные советы

  • config.yaml — единая точка для путей, профилей анализа и алиасов мониторинга. Изменения подхватываются на лету.
  • Результаты анализов и очереди задач попадают в runtime/ и игнорируются git. При необходимости очистите каталог перед следующими запусками.
  • Для работы realtime мониторинга добавьте каталоги в config.yaml или воспользуйтесь UI.
  • Если Streamlit или API недоступны в контейнере, убедитесь, что порты 8000/8501 не заняты на хосте и токен ngrok валиден.

Лицензия

Проект распространяется под лицензией MIT. Подробности в файле LICENSE (если присутствует).

About

AI Log Analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors