Как устроена платформа
Платформа 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
Поток данных
Заголовок раздела «Поток данных»-
Сбор
- Kubernetes — агент каждые 30 секунд опрашивает Prometheus и шлёт метрики.
- Облака — API-служба раз в час обращается к billing и monitoring API.
- On-prem и мониторинг — раз в 5 минут.
-
Нормализация Данные из разных источников приводятся к общей модели ресурса.
-
Применение тарифов Для Kubernetes / on-prem — из Settings → Pricing. Для облака — из биллинг-экспорта.
-
Расчёт стоимости Считаются
actual_cost,optimal_cost,saving_cost. Формулы — в Формулах расчёта. -
Конвертация валют Выполняется до агрегации, по курсу соответствующего дня.
-
Агрегация Почасовая → дневная → периодная. Результаты хранятся в pre-computed таблицах для скорости запросов.
-
Детекция Ежедневно в 04:00 UTC запускается джоба, которая ищет аномалии и строит рекомендации.
-
API и UI Все результаты доступны через REST API и отображаются в консоли.
Безопасность
Заголовок раздела «Безопасность»Аутентификация пользователя
Заголовок раздела «Аутентификация пользователя»- Пароль хэшируется (bcrypt). В открытом виде нигде не хранится.
- Сессия — через httpOnly cookies (недоступны JavaScript’у на странице).
- Access-токен живёт 1 час, refresh — 30 дней.
Аутентификация агента
Заголовок раздела «Аутентификация агента»- Агент использует company token — выдаётся при регистрации компании.
- Токен даёт право только на ingest-эндпоинты; пользовательских данных не видит.
- Токен хранится как Kubernetes Secret в кластере клиента.
Изоляция данных
Заголовок раздела «Изоляция данных»- Каждая компания — независимое пространство.
- Все SQL-запросы платформы фильтруются по идентификатору компании.
- Пользователь не может видеть ресурсы других компаний.
Credentials интеграций
Заголовок раздела «Credentials интеграций»- Credentials облаков и monitoring-источников хранятся зашифрованно.
- Доступ read-only: платформа не создаёт, не удаляет и не изменяет ресурсы в вашей инфраструктуре.
Расписания
Заголовок раздела «Расписания»| Задача | Частота |
|---|---|
| Сбор метрик Kubernetes | каждые 30 секунд |
| Сбор метрик хостов | каждые 5 минут |
| Импорт облачного биллинга | каждый час |
| Синхронизация cloud entities | каждый час |
| Обновление курсов валют | раз в сутки |
| Детекция аномалий и рекомендаций | раз в сутки (04:00 UTC) |
| Проверка порогов бюджетов | каждый час |
| Снимки истории расходов | раз в сутки |