Aller au contenu

Capacity planning

/agents/<id> → onglet Capacity affiche par serveur l’évolution sur 14 jours de CPU%, mem%, et throughput réseau, plus une projection régression linéaire “quand atteignez-vous le plafond”. La croissance disque se trouve sous l’onglet Disks.

Ce que fait la hub

Par métrique par agent il calcule :

SELECT time_bucket('1 day', time)::DATE AS day,
AVG(metric_expr)::FLOAT AS avg,
MAX(metric_expr)::FLOAT AS max
FROM <metric_table>
WHERE agent_id = X AND time > NOW() - INTERVAL '14 days'
GROUP BY 1 ORDER BY 1;

Puis régression linéaire sur day-index → avg :

slope = (n × ΣXY − ΣX × ΣY) / (n × ΣX² − ΣX²)

days_until_ceiling = (ceiling − current_avg) / slope, avec projection de date. Slope négative ou =0 → pas de projection.

Pour le disque par mount : identique mais depuis disk_metrics par (agent, mount_point). Ceiling = total_bytes.

Ce que vous voyez dans l’UI

Trois cards dans l’onglet Capacity :

  • CPU 14d — bars daily avg + max, current value, slope/jour, date de projection si slope > 0
  • Memory 14d — idem
  • Network 14d — total rx+tx Mbps. Pas de ceiling (pas de limite fixe), juste la tendance.

Par card vous voyez :

current avg X.XX % · slope +0.012/day
[14 barres daily : clair = max, foncé = avg]
~ 73 days until 100% (2026-07-22)

L’onglet Disks affiche par mount-point la même chose plus inode%, perms, fs-type. “Days until full” coloré : rouge < 30j, jaune < 90j, sinon muted.

Ce que ce n’est PAS

  • Pas de ML / time-series forecasting. Régression linéaire sur 14 points — marche pour une croissance monotone (logs qui s’accumulent, db storage). Marche mal pour des workloads spiky/saisonniers.
  • Pas d’intervalle de confiance. Vous obtenez une date de projection, pas une bande [P5–P95].
  • Pas de modèle multi-ressources. La projection CPU ignore la memory-pressure.

Pour du vrai capacity planning sur systèmes critiques, un spreadsheet avec jugement d’expert ou un outil comme Prophet. Cet onglet sert à couvrir le cas 80% : “quand ce disque sera-t-il plein”.

Astuce : alert rule + capacity ensemble

Combinez avec l’alert builder :

metric: disk_pct
operator: >
threshold: 85
duration: 3600 (1h au-dessus de 85%)
severity: warn

L’onglet Capacity vous montre probablement déjà depuis des semaines quand ça arrivera. L’alerte est le failsafe — capacity planning est l’early warning.