
Storage never stops growing, but very few teams can answer a more useful question than "what is the utilization right now?"
They need to know whether the current trend is sustainable, when a capacity threshold is likely to be reached, and whether a sudden change is normal business growth or an operational event. Without those answers, capacity management becomes reactive: watch a dashboard, wait for a static alert, and then scramble to clean up files or request more capacity.
Capacity planning should work in the opposite direction. It should start with a measured growth baseline, turn that baseline into a forecast, and then connect the forecast to a decision—investigate, expand, or continue monitoring. More importantly, this process should not depend on an engineer remembering to check. The Agent should run it autonomously and continuously. That is the problem Castrel is designed to address.
Most teams manage disk capacity through periodic manual inspection and static threshold alerts. An engineer queries disk usage across hosts or data centers. When a partition crosses a preset threshold, an alert fires. Someone then logs into the host, searches for large files, and decides—mostly from experience—whether the growth is ordinary business accumulation or something else, such as log or backup buildup.
If more capacity is needed, the next step is often a rough estimate followed by a budget and procurement request. If the problem looks temporary, the response is manual cleanup: expired logs, stale backups, or orphaned files. When the response comes too late, the partition fills up and the business feels it directly through write failures, a hung database, or an incident that needs immediate firefighting.
This model has three structural weaknesses:
As the number of instances grows, manual inspection grows with it. Teams can end up in a loop of "alert → temporary cleanup → alert again" while the risk of a business-impacting outage remains in the background.
The operational question is therefore not just "has capacity crossed the threshold?" It is "given the current trajectory, when will it cross the threshold, and what changed if the trajectory suddenly moves?"
In a typical scenario, an operations team wants to compare disk-capacity trends across data centers and identify which sites deserve attention first. Castrel Agent reads the relevant Prometheus-compatible metric directly—for example, disk_capacity_bytes{datacenter="phx1"}—instead of requiring an engineer to pull values from each host manually.

For this run, Castrel used roughly two months of daily samples from 2025-07-01 through 2025-08-30, sampled every 86,400 seconds. It applied a Holt-Winters model with a seven-day seasonal period and generated a 30-day forecast for 2025-09-01 through 2025-09-30 with a 95% prediction interval.
Before going further, several key concepts should be distinguished:
The training data for this experiment comes from disk_capacity_bytes—total disk capacity per data center. This means the model forecasts changes in the capacity baseline. Later sections show how to combine capacity forecasts with usage data to derive a complete capacity risk timeline.
The output is not just a number at the end of the month. It includes:
A useful forecast evaluation must separate two situations that look similar on a chart but mean different things operationally:
The generated report preserves the daily forecast, prediction bounds, and actual value for every site, making that distinction reviewable.

An important distinction: forecast accuracy and prediction interval are different concepts. A 95% prediction interval describes the range within which future values are expected to fall, reflecting forecast uncertainty. Forecast accuracy measures the deviation between predicted and actual values.
The table below uses month-end values from the report to evaluate forecast accuracy. The percentage is calculated as (actual − forecast) / forecast.
| Data center | Forecast (month-end) | Actual (month-end) | Signed error | Interpretation |
|---|---|---|---|---|
| phx1 | 155.82万 TB | 156.07万 TB | +0.16% | Organic growth; actual stayed close to forecast |
| sac0 | 102.12万 TB | 100.91万 TB | −1.18% | Organic growth; small deviation only |
| yyz1 | 7.68万 TB | 7.68万 TB | 0.00% | Organic growth; near-perfect endpoint match |
| sac2 | 98.29万 TB | 99.99万 TB | +1.73% | Baseline change; divergence warrants investigation against change records |
| iad1 | 88.37万 TB | 93.36万 TB | +5.65% | Baseline change; divergence warrants investigation against change records |
| ams5 | 40.64万 TB | 46.79万 TB | +15.13% | Baseline change; divergence warrants investigation against change records |
For the three organic-growth sites—phx1, sac0, and yyz1—the mean absolute percentage error (MAPE) is approximately 0.45%, with a maximum absolute error of 1.18%. Within this time window and sample, that indicates the model captured the organic capacity trend well.
The other three sites diverged primarily because the capacity baseline underwent a structural change during the forecast period—disks were added or removed, altering the object being forecast. This divergence cannot be simply attributed to insufficient model prediction capability. Its value is that when the Agent detects actual values significantly departing from the forecast trend, it can prompt operators to investigate further against change records, rather than simply treating it as a forecast failure.
It should be noted that the current validation is based on month-end endpoint values only. For a more comprehensive assessment, daily error analysis over the full forecast period could be added. The current sample size limits the scope of the conclusion, but it is sufficient to establish that forecasts can be evaluated quantitatively, and the evaluation should distinguish organic growth from baseline changes.
A capacity forecast answers "what is the growth trend for the next 30 days," but what operations really cares about is: "at the current rate, when will we enter a capacity risk zone, and how much time do we have to prepare?"
Answering that question requires combining the capacity forecast with usage data to calculate when capacity thresholds will be reached.
Take the phx1 data center as an example. As of 2025-09-30, phx1 shows the following capacity and usage status:
| Metric | Value |
|---|---|
| Total capacity | 156.07万 TB |
| Used capacity | 112.37万 TB |
| Current utilization | 72.0% |
| Recent daily growth | ~2,700 TB/day |
Operations teams typically set two capacity thresholds:
Based on the current utilization and recent growth trend, the Agent calculates:
| Threshold | Threshold capacity | Remaining headroom | Estimated date | Days remaining |
|---|---|---|---|---|
| 80% planning | 124.86万 TB | 12.49万 TB | ~mid-Nov 2025 | ~46 days |
| 90% risk | 140.46万 TB | 28.09万 TB | ~mid-Jan 2026 | ~104 days |
This means phx1 is not in an urgent risk state, but has approximately 46 days of runway before entering the planning threshold. The operations team can use this window to complete capacity evaluation, budget approval, and hardware procurement. There is an additional ~58-day risk buffer between the 80% planning threshold and the 90% risk threshold—the actual action window between "should start planning" and "must complete expansion." If growth accelerates, these windows shrink accordingly—which is exactly why the Agent needs to continuously monitor and dynamically update forecasts.
The Agent's capacity risk assessment for this site:
phx1 risk rating: Medium
Current utilization 72.0%, estimated to reach the 80% planning threshold in 46 days (~mid-Nov 2025). Recommend initiating capacity evaluation within the next two weeks to complete planning before entering the warning zone. If daily growth consistently exceeds 2,700 TB, the risk window will narrow further, and the Agent will update forecasts and adjust the risk rating in the next inspection cycle.
The forecasting algorithm answers "what is the growth trend." The Agent turns that trend into "how many days remain and what should be done"—the answer operations teams actually need.
A forecasting algorithm answers one question:
Given this time series, what is the likely future trajectory?
A standalone Holt-Winters implementation can consume a series and return a forecast and prediction bounds. It does not decide which metrics to query, run the same analysis across multiple data centers, compare results with actual values, investigate divergence, or turn findings into operational recommendations.
More importantly, a forecasting algorithm does not decide when to run. It requires someone to invoke it.
The Agent's core difference is not chaining a forecasting algorithm into a predefined sequence. It is the ability to autonomously understand a problem, acquire information, choose the right analysis, interpret results, and decide what to do next—all oriented around a capacity management goal.
In this example, the Agent completed the following—not by following a fixed predefined process, but by autonomously deciding what to do at each step based on the current problem and data:
The other key differentiator is that the Agent does not wait for a human trigger—it can autonomously initiate capacity analysis through scheduled inspection.
Scheduled inspection only triggers the Agent. The subsequent analysis is entirely up to the Agent to decide:
This means that even if no one asks "is disk capacity still sufficient," the Agent periodically discovers issues, updates forecasts, assesses risk, and proactively pushes notifications when necessary. If the previous cycle estimated a site would reach the planning threshold in 45 days, but this cycle finds that growth has accelerated and the estimate has shortened to 27 days, the Agent automatically raises the risk rating and recommends starting expansion preparations earlier.
This changes the starting point for an operations conversation. Instead of waiting for "disk full" and then asking what happened, the team can discuss a measured trajectory, an expected planning date, the uncertainty around that date, and the evidence behind the assessment. And this is not a one-time analysis—it is a continuously running, continuously updating loop.
This is the fundamental difference between the Agent and a forecasting algorithm:
The value of this approach is not just a line on a forecast chart. It changes how capacity management works:
From passively waiting for capacity alerts to an Agent that proactively discovers capacity risks and provides quantifiable planning windows in advance.
The forecasting algorithm provides the statistical growth estimate. The Agent embeds that forecasting capability into a capacity management process that can autonomously understand, analyze, decide, and run continuously—transforming a one-time model call into a system that runs on its own, updates on its own, and alerts on its own.