Troubleshoot along the workflow
| Symptom | Check first |
|---|---|
| No history | Source, template variables, labels, time range, and units. |
| Some models have no results | Sample requirements, parameters, inputs, and runtime in model-run details. |
| Evaluation is empty | Whether target times have arrived and actuals have been collected. |
| Fallback advice | Snapshot sources, input freshness, eligibility, and recovery state. |
| Replicas are unchanged | Authorization, bypass, conflicts, expiry, step limits, and cooldowns. |
| Desired count changed but capacity is low | Current replicas, Ready status, Pod startup, and preparation time. |
Inspect metrics and curves
Use the metric catalog and query tools to compare history, forecasts, actual performance, freshness, and runtime status. Distinguish missing samples from observations; connections across gaps are not measurements.
External monitoring
Set metrics.listen to expose /metrics, /healthz, and /readyz. Platform metrics use kube_res_foresight_*; Operator metrics use kube_res_foresight_operator_*.
Metrics observe the workflow rather than replacing snapshots, action reports, or readiness. Synchronous admission does not wait for long Prometheus queries or inference.
Review connected records
Follow a module through model runs, forecasts, evaluations, recommendations, admission, and scaling. For offline review, use audit exports with the appropriate scope and permissions.
Watch decision sources and scaling delays
Distinguish platform responses, cached decisions, recovery, and expired caches. Inspect kube_res_foresight_operator_decision_source_total and kube_res_foresight_operator_decision_cache_age_seconds, then correlate expansion timeliness with Ready-replica curves to separate forecast lag from slow capacity readiness.
No model output is expected when prediction is disabled. Check the module's prediction mode before investigating data, models, and execution.