Перейти к содержимому

Как устроена платформа

Платформа OpsMan AI построена из трёх логических компонентов — API-служба, консоль и агент сбора метрик. Все остальные сущности (PostgreSQL, внешние источники) подключаются как инфраструктурные зависимости.

flowchart LR
  subgraph Platform[OpsMan AI]
    API[API-служба<br/>приём, расчёт, REST API]
    UI[Консоль<br/>SSR-приложение]
    API <-->|SQL| DB[(PostgreSQL)]
  end

  subgraph Client[Клиентская инфраструктура]
    K8s[Kubernetes<br/>+ агент metrics-collector]
    Clouds[Облачные аккаунты]
    Monitoring[Системы мониторинга]
    Virt[Виртуализация / on-prem]
  end

  Browser[Браузер] -->|HTTPS| UI
  UI -->|REST| API
  K8s -->|Bearer token| API
  API -.->|API провайдеров| Clouds
  API -.->|API мониторинга| Monitoring
  API -.->|API гипервизоров| Virt
  1. Сбор

    • Kubernetes — агент каждые 30 секунд опрашивает Prometheus и шлёт метрики.
    • Облака — API-служба раз в час обращается к billing и monitoring API.
    • On-prem и мониторинг — раз в 5 минут.
  2. Нормализация Данные из разных источников приводятся к общей модели ресурса.

  3. Применение тарифов Для Kubernetes / on-prem — из Settings → Pricing. Для облака — из биллинг-экспорта.

  4. Расчёт стоимости Считаются actual_cost, optimal_cost, saving_cost. Формулы — в Формулах расчёта.

  5. Конвертация валют Выполняется до агрегации, по курсу соответствующего дня.

  6. Агрегация Почасовая → дневная → периодная. Результаты хранятся в pre-computed таблицах для скорости запросов.

  7. Детекция Ежедневно в 04:00 UTC запускается джоба, которая ищет аномалии и строит рекомендации.

  8. API и UI Все результаты доступны через REST API и отображаются в консоли.

  • Пароль хэшируется (bcrypt). В открытом виде нигде не хранится.
  • Сессия — через httpOnly cookies (недоступны JavaScript’у на странице).
  • Access-токен живёт 1 час, refresh — 30 дней.
  • Агент использует company token — выдаётся при регистрации компании.
  • Токен даёт право только на ingest-эндпоинты; пользовательских данных не видит.
  • Токен хранится как Kubernetes Secret в кластере клиента.
  • Каждая компания — независимое пространство.
  • Все SQL-запросы платформы фильтруются по идентификатору компании.
  • Пользователь не может видеть ресурсы других компаний.
  • Credentials облаков и monitoring-источников хранятся зашифрованно.
  • Доступ read-only: платформа не создаёт, не удаляет и не изменяет ресурсы в вашей инфраструктуре.
ЗадачаЧастота
Сбор метрик Kubernetesкаждые 30 секунд
Сбор метрик хостовкаждые 5 минут
Импорт облачного биллингакаждый час
Синхронизация cloud entitiesкаждый час
Обновление курсов валютраз в сутки
Детекция аномалий и рекомендацийраз в сутки (04:00 UTC)
Проверка порогов бюджетовкаждый час
Снимки истории расходовраз в сутки