Формулы расчёта стоимости
Для каждого ресурса рассчитываются три величины:
- Actual cost — фактическая стоимость при действующем тарифе и реальном потреблении.
- Optimal cost — стоимость, если бы ресурс использовался полностью (без резервов).
- Saving cost — разница:
actual − optimal. Это потенциал экономии.
Kubernetes pod / workload
Заголовок раздела «Kubernetes pod / workload»Тарифы — почасовые: ставка на CPU-час и на Memory-час.
Почасовая стоимость:
actual_cost(pod, hour) = max(request_cpu, usage_cpu) × cpu_price_per_hour + max(request_memory, usage_memory / GB) × memory_price_per_houroptimal_cost(pod, hour) = usage_cpu × cpu_price_per_hour + usage_memory / GB × memory_price_per_hourmax(request, usage) — потому что в Kubernetes ресурсы бронируются запросом (request), даже если фактическое потребление меньше.
Хост (VM, bare metal, Proxmox, VMware, OpenStack)
Заголовок раздела «Хост (VM, bare metal, Proxmox, VMware, OpenStack)»Тарифы — дневные: ставка на CPU-день и Memory-день.
actual_cost(host, day) = cpu_cores × cpu_price_per_day + memory_bytes / GB × memory_price_per_dayOptimal считается аналогично Kubernetes — по фактическому usage.
Облачные ресурсы
Заголовок раздела «Облачные ресурсы»Тарифы — из биллинга провайдера. Платформа не применяет собственных ставок, а складывает дневную стоимость из биллинг-экспорта. Optimal определяется аналитически через подбор меньшего типа ресурса на основе метрик утилизации.
Агрегация по периодам
Заголовок раздела «Агрегация по периодам»Расчёт идёт последовательно:
- Почасовое (K8s) → суммируется в дневное.
- Дневное → суммируется в месячное / периодное.
- Агрегация выполняется после конвертации валют, но до округления. Округление — только на клиенте.
Это гарантирует, что сумма в таблице равна сумме частей на графике.
Прогноз (Forecast)
Заголовок раздела «Прогноз (Forecast)»Прогноз до конца периода строится экстраполяцией тренда.
Упрощённая формула:
forecast(day) = avg(last_7_days) × day_of_monthБолее сложная модель учитывает дни недели (workload в будние выше, чем в выходные).
Валютная конвертация
Заголовок раздела «Валютная конвертация»- Один источник, одна валюта — конвертация не выполняется.
- Несколько источников с разными валютами — конвертация в валюту top bar.
- Курс: из таблицы курсов, обновляется раз в сутки.
- Для исторических дней — курс на тот день (если доступен).
При отсутствии исторического курса значение помечается как приблизительное и отображается с предупреждением.
Пример расчёта
Заголовок раздела «Пример расчёта»Kubernetes pod:
- request: 2 CPU, 4 GiB.
- usage: 0.5 CPU, 1 GiB.
- тариф:
$0.03/CPU-час,$0.005/GiB-час.
actual = max(2, 0.5) × 0.03 + max(4, 1) × 0.005 = 2 × 0.03 + 4 × 0.005 = $0.080/час
optimal = 0.5 × 0.03 + 1 × 0.005 = $0.020/час
saving = $0.060/часЗа месяц (730 часов):
- actual ≈ $58.40.
- optimal ≈ $14.60.
- saving ≈ $43.80.
Такой pod — явный кандидат на right-sizing.