(Prophet auto-detected seasonality interval):
And here's what Holt-Winters predictions real-world data could look like (seasonality manually set to 1 week). Notice that it predicts anomalies in different places than Prophet because the model noticed there are usually spikes on Friday morning, so it accounted for that:
Upon starting, vmanomaly queries the initial range of data, and trains its model ("fit" by convention).
Then, reads new data from VictoriaMetrics, according to schedule, and invokes its model to compute "anomaly score" for each data point. The anomaly score ranges from 0 to positive infinity. Values less than 1.0 are considered "not an anomaly", values greater or equal than 1.0 are considered "anomalous", with greater values corresponding to larger anomaly. Then, VMAnomaly pushes the metric to vminsert (under the user-configured metric name, optionally preserving labels).
The vmanomaly accepts only one parameter – config file path:
python3 vmanomaly.py config_zscore.yaml
python3 -m vmanomaly config_zscore.yaml
It is also possible to split up config into multiple files, just list them all in the command line:
python3 -m vmanomaly model_prophet.yaml io_csv.yaml scheduler_oneoff.yaml