Capacity forecasts
A capacity forecast tells you when each licence pool, PoE budget, port, AP or
radio will reach its limit if the current trend goes on, soonest first. Open
it on Monitor › Reports (the Capacity forecast card, then Forecast),
or ask Claude, which uses metrics.forecast. Every member of the organisation
can run it, and it makes no calls to the controller.
The forecast fits a robust straight line (Theil–Sen) through one value per UTC day, taken from the stored daily rollups. The current day is shown but not fitted. A planned rollout or a move changes the trend, and a forecast can’t know about either.
Every subject is built from polled metrics, so API polling must be on (see Metrics).
What does it forecast, and against what limit?
Section titled “What does it forecast, and against what limit?”Five subjects, each with its own default limit:
| What (dashboard) | subject | Daily value | Capacity | Full at |
|---|---|---|---|---|
| Licence pools | licences | Peak licences in use | The pool’s total | 100% |
| PoE budget per switch | poe | Peak PoE draw | The switch’s PoE budget | 95% |
| Port utilisation | ports | The busier of receive and transmit rate at its peak | The link speed | 80%. Ports never over 10% in the window are left out |
| Clients per AP | ap_clients | Peak wireless clients | A planned 100 | 80% |
| Radio airtime | airtime | The radio’s daily average airtime | 100% | 70% |
Everything (the default) runs all five. For Clients per AP and Radio airtime you can enter your own Capacity, such as your design figure for clients per AP. Limit % overrides the “full at” percentage for any subject.
Which settings can I change?
Section titled “Which settings can I change?”| Field | Default | Range |
|---|---|---|
| History (days) | 28 | 7–180 days of daily values to fit |
| Soon = within (days) | 90 | 7–365. A limit reached within this many days is SOON |
| Capacity | Per subject | Only for Clients per AP and Radio airtime |
| Limit % | Per subject | 1–100 |
| Within | Everything | An inventory id such as zone:… |
On the dashboard, the form won’t submit a value outside these ranges, and
Claude’s metrics.forecast refuses one with its argument check.
What do the verdicts mean?
Section titled “What do the verdicts mean?”| Chip | Verdict | Meaning |
|---|---|---|
| AT LIMIT | full | It is at or over the limit now |
| SOON | soon | The line reaches the limit within the “soon” window |
| LATER | later | The line reaches the limit, but after the window |
| FLAT | flat | Not rising: under a thousandth of capacity a week, or a weak rise that would only reach the limit after the window |
| LEARNING | learning | Fewer than 7 full days of data, so no line yet |
Each row shows Now, Capacity, Used (%), Per week, To limit, the Date it reaches the limit, and Confidence. Confidence is high when the rise over the window is more than twice the typical day-to-day scatter and there are at least 14 days of data. Otherwise it is low. A low-confidence date is a line through noise, so treat it as a hint rather than a date.
Can I get it as a file?
Section titled “Can I get it as a file?”Yes: after a run, CSV downloads every row and Print / PDF prints the
forecast. The CSV columns are subject, id, name, verdict, latest,
capacity, unit, percent, limit, per_week, days_to_limit, full_by,
confidence and points. The page lists up to 5,000 rows per subject, soonest
first. Claude lists 20 rows per subject by default (at most
500) and returns a link that opens the same forecast on the Reports page.
Are there alerts for this?
Section titled “Are there alerts for this?”Yes: two starter rules warn ahead of time, evaluated every 6 hours on the last 14 days’ trend, and only while the value is rising and has room left:
| Rule | WARNING | CRITICAL |
|---|---|---|
license-full-forecast | A licence pool is full in under 60 days | Under 21 days |
switch-poe-full-forecast | A switch’s peak PoE draw reaches 95% of its budget in under 30 days | Under 7 days |
Install them with the starter pack.
What errors can I get?
Section titled “What errors can I get?”| Message | Cause |
|---|---|
No entity or location <id>. | The Within id isn’t in the inventory |
A subject with nothing to show says why in its notes, for example “No licensepool_used data in the window.” or ”… with no capacity reported (0 or missing), left out.”