Prophet

Prophet forecasts time series data using an additive model with non-linear trends. We recommend it for time series that exhibit strong seasonal effects, and contain several cycles of historical data.

Kloudfuse implements the Prophet algorithm as the agile-robust option for Anomaly Detection. It supports hourly, daily, and weekly seasonality.

Concept diagram: a series with piecewise-linear trend changepoints and seasonality

Parameters

seasonality

The seasonal cycle to model: 0 = hourly, 1 = daily, 2 = weekly.

bound

Width of the anomaly band in standard deviations: 1, 2, or 3.

band

Which band series to return: 4 = lower band, 5 = upper band, 6 = both.

How it works

Prophet decomposes each series into a piecewise-linear trend — with automatically detected changepoints where the growth rate shifts — plus seasonal components at the selected cycle. The fitted model produces a prediction per timestamp; the upper and lower bands sit bound standard deviations around it, and observed values outside the band are anomalous. Uncertainty widens beyond the trained range, so the band grows in the forecast region.

In Dashboards

To use Prophet operator in a dashboard, apply the following function:

prophet( \
  ${promql}, \ (1)
  ${seasonality} \ (2)
  ${bound}, \ (3)
  ${band} \ (4)
)
none
1 ${promql}: PromQL query to evaluate
2 ${seasonality} 0 = hourly, 1 = daily, 2 = weekly
3 ${bound}: Number of standard deviations (stdv): 1, 2, or 3
4 ${band}: 4 = lower band, 5 = upper band, 6 = both upper and lower bands

For the operator reference — syntax, parameters, and a validated example — see prophet in the PromQL documentation.

Limitations

  • If the evaluated metrics do not exhibit true seasonality, Prophet may create incorrect (invalid) alerts, or mask valid alerting conditions.

  • Prophet fits a model per input series, and it is the most computationally expensive of the advance functions. Query cost grows linearly with the number of series — a high-cardinality by (…​) grouping can take many seconds or time out. Aggregate first (for example, sum by (service) (…​)) so the function receives a handful of series, not hundreds.

  • Each input series returns up to three output series (prediction, lower bound, upper bound), so wide inputs also multiply the result size.

  • The service fetches training history beyond the visible chart range — several seasonal cycles. Series without enough history produce no bands.

Next steps

For an in-depth discussion of the Prophet approach, see these resources: