diff --git a/docs/anomaly-detection/CHANGELOG.md b/docs/anomaly-detection/CHANGELOG.md
index b467c2e67b..bca970a9e2 100644
--- a/docs/anomaly-detection/CHANGELOG.md
+++ b/docs/anomaly-detection/CHANGELOG.md
@@ -17,6 +17,20 @@ Please find the changelog for VictoriaMetrics Anomaly Detection below.
> **Important note: Users are strongly encouraged to upgrade to `vmanomaly` [v1.9.2](https://hub.docker.com/repository/docker/victoriametrics/vmanomaly/tags?page=1&ordering=name) or later versions for optimal performance and accuracy.
This recommendation is crucial for configurations with a low `infer_every` parameter [in your scheduler](https://docs.victoriametrics.com/anomaly-detection/components/scheduler/#parameters-1), and in scenarios where data exhibits significant high-order seasonality patterns (such as hourly or daily cycles). Previous versions from v1.5.1 to v1.8.0 were identified to contain a critical issue impacting model training, where models were inadvertently trained on limited data subsets, leading to suboptimal fits, affecting the accuracy of anomaly detection.
Upgrading to v1.9.2 addresses this issue, ensuring proper model training and enhanced reliability. For users utilizing Helm charts, it is recommended to upgrade to version [1.0.0](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-anomaly/CHANGELOG.md#100) or newer.**
+
+## v1.12.0
+Released: 2024-03-31
+- FEATURE: Introduction of `AutoTunedModel` model class to optimize any [built-in model](/anomaly-detection/components/models/#built-in-models) on data during `fit` phase. Specify as little as `anomaly_percentage` param from `(0, 0.5)` interval and `tuned_model_class` (i.e. [`model.zscore.ZscoreModel`](/anomaly-detection/components/models/#z-score)) to get it working with best settings that match your data. See details [here](/anomaly-detection/components/models/#autotuned).
+
+- IMPROVEMENT: Better logging of model lifecycle (fit/infer stages).
+- IMPROVEMENT: Introduce `provide_series` arg to all the [built-in models](/anomaly-detection/components/models/#built-in-models) to define what output fields to generate for writing (i.e. `provide_series: ['anomaly_score']` means only scores are being produced)
+- FIX: [Self-monitoring metrics](anomaly-detection/components/monitoring/#models-behaviour-metrics) are now aggregated to `queries` aliases level (not to label sets of individual timeseries) and aligned with [reader, writer and model sections](/anomaly-detection/components/monitoring/#metrics-generated-by-vmanomaly) description , so `/metrics` endpoint holds only necessary information for scraping.
+- FIX: Self-monitoring metric `vmanomaly_models_active` now has additional labels `model_alias`, `scheduler_alias`, `preset` to align with model-centric [self-monitoring](https://docs.victoriametrics.com/anomaly-detection/components/monitoring/#models-behaviour-metrics).
+- IMPROVEMENT: Add possibility to use temporal information in [IsolationForest models](/anomaly-detection/components/models/#isolation-forest-multivariate) via [cyclical encoding](https://towardsdatascience.com/cyclical-features-encoding-its-about-time-ce23581845ca). This is particularly helpful to detect multivariate [seasonality](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-1/#seasonality)-dependant anomalies.
+- BREAKING CHANGE: **ARIMA** model is removed from [built-in models](/anomaly-detection/components/models/#built-in-models). For affected users, it is suggested to replace ARIMA by [Prophet](/anomaly-detection/components/models/#prophet) or [Holt-Winters](/anomaly-detection/components/models/#holt-winters).
+
## v1.11.0
Released: 2024-02-22
- FEATURE: Multi-scheduler support. Now users can use multiple [model specs](https://docs.victoriametrics.com/anomaly-detection/components/models/) in a single config (via aliasing), each spec can be run with its own (even multiple) [schedulers](https://docs.victoriametrics.com/anomaly-detection/components/scheduler/).
diff --git a/docs/anomaly-detection/QuickStart.md b/docs/anomaly-detection/QuickStart.md
index 23aaa65732..ec0c4751d9 100644
--- a/docs/anomaly-detection/QuickStart.md
+++ b/docs/anomaly-detection/QuickStart.md
@@ -16,18 +16,19 @@ aliases:
For service introduction visit [README](/anomaly-detection/) page
and [Overview](/anomaly-detection/overview.html) of how `vmanomaly` works.
-## How to install and run `vmanomaly`
+## How to install and run vmanomaly
-> To run `vmanomaly` you need to have VictoriaMetrics Enterprise license. You can get a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/index.html).
+> To run `vmanomaly`, you need to have VictoriaMetrics Enterprise license. You can get a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/).
The following options are available:
-- [To run Docker image](#docker-image)
-- [To run in Kubernetes with Helm charts](#helm-charts)
+- [To run Docker image](#docker)
+- [To run in Kubernetes with Helm charts](#kubernetes-with-helm-charts)
### Docker
-> To run `vmanomaly` you need to have a VictoriaMetrics Enterprise [licence](https://victoriametrics.com/products/enterprise/) or request a trial [here](https://victoriametrics.com/products/enterprise/trial/index.html).
+
+> To run `vmanomaly`, you need to have VictoriaMetrics Enterprise license. You can get a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/).
Below are the steps to get `vmanomaly` up and running inside a Docker container:
@@ -62,6 +63,8 @@ See also:
### Kubernetes with Helm charts
+> To run `vmanomaly`, you need to have VictoriaMetrics Enterprise license. You can get a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/).
+
You can run `vmanomaly` in Kubernetes environment
with [these Helm charts](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-anomaly/README.md).
diff --git a/docs/anomaly-detection/README.md b/docs/anomaly-detection/README.md
index f3e87d1f00..bda519909c 100644
--- a/docs/anomaly-detection/README.md
+++ b/docs/anomaly-detection/README.md
@@ -17,23 +17,23 @@ Begin your VictoriaMetrics Anomaly Detection journey with ease using our guides
- **Quickstart**: Check out how to get `vmanomaly` up and running [here](/anomaly-detection/QuickStart.html).
- **Overview**: Find out how `vmanomaly` service operates [here](/anomaly-detection/Overview.html)
-- **Integration**: Integrate anomaly detection into your observability ecosystem. Get started [**here**](/anomaly-detection/guides/guide-vmanomaly-vmalert.html).
+- **Integration**: Integrate anomaly detection into your observability ecosystem. Get started [here](/anomaly-detection/guides/guide-vmanomaly-vmalert.html).
- **Installation Options**: Select the method that aligns with your technical requirements:
- **Docker Installation**: Suitable for containerized environments. See [Docker guide](/anomaly-detection/Overview.html#run-vmanomaly-docker-container).
- **Helm Chart Installation**: Appropriate for those using Kubernetes. See our [Helm charts](https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-anomaly).
-> **Note**: starting from [v1.5.0](./CHANGELOG.md#v150) `vmanomaly` requires a [license key](/anomaly-detection/Overview.html#licensing) to run. You can obtain a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/index.html).
+> **Note**: starting from [v1.5.0](./CHANGELOG.md#v150) `vmanomaly` requires a [license key](/anomaly-detection/Overview.html#licensing) to run. You can obtain a trial license key [**here**](https://victoriametrics.com/products/enterprise/trial/).
## Key Components
Explore the integral components that configure VictoriaMetrics Anomaly Detection:
* [Explore components and their interation](/anomaly-detection/components)
- - [Models](/anomaly-detection/components/models.html)
- - [Reader](/anomaly-detection/components/reader.html)
- - [Scheduler](/anomaly-detection/components/scheduler.html)
- - [Writer](/anomaly-detection/components/writer.html)
- - [Monitoring](/anomaly-detection/components/monitoring.html)
+ - [Models](/anomaly-detection/components/models)
+ - [Reader](/anomaly-detection/components/reader)
+ - [Scheduler](/anomaly-detection/components/scheduler)
+ - [Writer](/anomaly-detection/components/writer)
+ - [Monitoring](/anomaly-detection/components/monitoring)
## Deep Dive into Anomaly Detection
Enhance your knowledge with our handbook on Anomaly Detection & Root Cause Analysis and stay updated:
@@ -46,12 +46,12 @@ Enhance your knowledge with our handbook on Anomaly Detection & Root Cause Analy
## Frequently Asked Questions (FAQ)
Got questions about VictoriaMetrics Anomaly Detection? Chances are, we've got the answers ready for you.
-Dive into [our FAQ section](/anomaly-detection/FAQ.html) to find responses to common questions.
+Dive into [our FAQ section](/anomaly-detection/FAQ) to find responses to common questions.
## Get in Touch
We're eager to connect with you and tailor our solutions to your specific needs. Here's how you can engage with us:
* [Book a Demo](https://calendly.com/victoriametrics-anomaly-detection) to discover what our product can do.
-* Interested in exploring our [Enterprise features](https://victoriametrics.com/products/enterprise), including Anomaly Detection? [Request your trial license](https://victoriametrics.com/products/enterprise/trial/) today and take the first step towards advanced system observability.
+* Interested in exploring our [Enterprise features](https://victoriametrics.com/products/enterprise), including [Anomaly Detection](https://victoriametrics.com/products/enterprise/anomaly-detection)? [Request your trial license](https://victoriametrics.com/products/enterprise/trial/) today and take the first step towards advanced system observability.
---
Our [CHANGELOG is just a click away](./CHANGELOG.md), keeping you informed about the latest updates and enhancements.
\ No newline at end of file
diff --git a/docs/anomaly-detection/components/autotune.webp b/docs/anomaly-detection/components/autotune.webp
new file mode 100644
index 0000000000..5797082e4d
Binary files /dev/null and b/docs/anomaly-detection/components/autotune.webp differ
diff --git a/docs/anomaly-detection/components/model-lifecycle-multivariate.webp b/docs/anomaly-detection/components/model-lifecycle-multivariate.webp
new file mode 100644
index 0000000000..952f45d6ba
Binary files /dev/null and b/docs/anomaly-detection/components/model-lifecycle-multivariate.webp differ
diff --git a/docs/anomaly-detection/components/model-lifecycle-univariate.webp b/docs/anomaly-detection/components/model-lifecycle-univariate.webp
new file mode 100644
index 0000000000..85067422c9
Binary files /dev/null and b/docs/anomaly-detection/components/model-lifecycle-univariate.webp differ
diff --git a/docs/anomaly-detection/components/model-type-non-rolling.webp b/docs/anomaly-detection/components/model-type-non-rolling.webp
new file mode 100644
index 0000000000..8d022748b4
Binary files /dev/null and b/docs/anomaly-detection/components/model-type-non-rolling.webp differ
diff --git a/docs/anomaly-detection/components/model-type-rolling.webp b/docs/anomaly-detection/components/model-type-rolling.webp
new file mode 100644
index 0000000000..71d78b2c6c
Binary files /dev/null and b/docs/anomaly-detection/components/model-type-rolling.webp differ
diff --git a/docs/anomaly-detection/components/models.md b/docs/anomaly-detection/components/models.md
index 6437c55d33..19bb36eb36 100644
--- a/docs/anomaly-detection/components/models.md
+++ b/docs/anomaly-detection/components/models.md
@@ -25,18 +25,18 @@ vmanomaly includes various [built-in models](#built-in-models) and you can integ
```yaml
models:
model_univariate_1:
- class: "model.zscore.ZscoreModel"
+ class: 'model.zscore.ZscoreModel'
z_threshold: 2.5
- queries: ["query_alias2"] # referencing queries defined in `reader` section
+ queries: ['query_alias2'] # referencing queries defined in `reader` section
model_multivariate_1:
- class: "model.isolation_forest.IsolationForestMultivariateModel"
- contamination: "auto"
+ class: 'model.isolation_forest.IsolationForestMultivariateModel'
+ contamination: 'auto'
args:
n_estimators: 100
# i.e. to assure reproducibility of produced results each time model is fit on the same input
random_state: 42
# if there is no explicit `queries` arg, then the model will be run on ALL queries found in reader section
-...
+# ...
```
Old-style configs (< [1.10.0](/anomaly-detection/changelog#v1100))
@@ -44,9 +44,9 @@ Old-style configs (< [1.10.0](/anomaly-detection/changelog#v1100))
```yaml
model:
class: "model.zscore.ZscoreModel"
- z_threshold: 2.5
+ z_threshold: 3.0
# no explicit `queries` arg is provided
-...
+# ...
```
will be **implicitly** converted to
@@ -55,10 +55,10 @@ will be **implicitly** converted to
models:
default_model: # default model alias, backward compatibility
class: "model.zscore.ZscoreModel"
- z_threshold: 2.5
+ z_threshold: 3.0
# queries arg is created and propagated with all query aliases found in `queries` arg of `reader` section
- queries: ["q1", "q2", "q3"] # i.e., if your `queries` in `reader` section has exactly q1, q2, q3 aliases
-...
+ queries: ['q1', 'q2', 'q3'] # i.e., if your `queries` in `reader` section has exactly q1, q2, q3 aliases
+# ...
```
@@ -77,7 +77,7 @@ This arg is **backward compatible** - if there is no explicit `queries` arg, the
```yaml
models:
model_alias_1:
- ...
+ # ...
# no explicit `queries` arg is provided
```
@@ -86,9 +86,9 @@ will be implicitly converted to
```yaml
models:
model_alias_1:
- ...
- # queries arg is created and propagated with all query aliases found in `queries` arg of `reader` section
- queries: ["q1", "q2", "q3"] # i.e., if your `queries` in `reader` section has exactly q1, q2, q3 aliases
+ # ...
+ # if not set, `queries` arg is created and propagated with all query aliases found in `queries` arg of `reader` section
+ queries: ['q1', 'q2', 'q3'] # i.e., if your `queries` in `reader` section has exactly q1, q2, q3 aliases
```
### Schedulers
@@ -102,7 +102,7 @@ This arg is **backward compatible** - if there is no explicit `schedulers` arg,
```yaml
models:
model_alias_1:
- ...
+ # ...
# no explicit `schedulers` arg is provided
```
@@ -111,11 +111,24 @@ will be implicitly converted to
```yaml
models:
model_alias_1:
- ...
- # queries arg is created and propagated with all query aliases found in `queries` arg of `reader` section
- schedulers: ["s1", "s2", "s3"] # i.e., if your `schedulers` section has exactly s1, s2, s3 aliases
+ # ...
+ # if not set, `schedulers` arg is created and propagated with all scheduler aliases found in `schedulers` section
+ schedulers: ['s1', 's2', 's3'] # i.e., if your `schedulers` section has exactly s1, s2, s3 aliases
```
+### Provide Series
+
+Introduced in [1.12.0](/anomaly-detection/changelog#1120), `provide_series` arg limit the [output generated](#vmanomaly-output) by `vmanomaly` for writing. I.e. if the model produces default output series `['anomaly_score', 'yhat', 'yhat_lower', 'yhat_upper']` by specifying `provide_series` section as below, you limit the data being written to only `['anomaly_score']` for each metric received as a subject to anomaly detection.
+
+```yaml
+models:
+ model_alias_1:
+ # ...
+ provide_series: ['anomaly_score'] # only `anomaly_score` metric will be available for writing back to the database
+```
+
+**Note** If `provide_series` is not specified in model config, the model will produce its default [model-dependent output](#vmanomaly-output). The output can't be less than `['anomaly_score']. Even if `timestamp` column is ommitted, it will be implicitly added to `provide_series` list, as it's required for metrics to be properly written.
+
## Model types
There are **2 model types**, supported in `vmanomaly`, resulting in **4 possible combinations**:
@@ -139,7 +152,8 @@ If during an inference, you got a series having **new labelset** (not present in
**Examples:** [Prophet](#prophet), [Holt-Winters](#holt-winters)
-
+
vmanomaly_model_runs
stage, query_key, model_alias
stage, query_key, model_alias, scheduler_alias, preset
vmanomaly_model_run_duration_seconds
stage, query_key, model_alias
stage, query_key, model_alias, scheduler_alias, preset
vmanomaly_model_datapoints_accepted
stage, query_key, model_alias
stage, query_key, model_alias, scheduler_alias, preset
vmanomaly_model_datapoints_produced
stage, query_key, model_alias
stage, query_key, model_alias, scheduler_alias, preset
vmanomaly_models_active
query_key
query_key, model_alias, scheduler_alias, preset
vmanomaly_model_runs_skipped
stage, query_key, model_alias
stage, query_key, model_alias, scheduler_alias, preset
stage
- stage of model - 'fit', 'infer' or 'fit_infer' for models that do it simultaneously.
+stage
- stage of model - 'fit', 'infer' or 'fit_infer' for models that do it simultaneously, see [model types](/anomaly-detection/components/models/#model-types).
query_key
- query alias from [`reader`](/anomaly-detection/components/reader.html) config section.
model_alias
- model alias from [`models`](/anomaly-detection/components/models.html) config section. **Introduced in [v1.10.0](/anomaly-detection/changelog/#v1100).**
+scheduler_alias
- scheduler alias from [`schedulers`](anomaly-detection/components/scheduler/) config section. **Introduced in [v1.11.0](/anomaly-detection/changelog/#v1110).**
+
+preset
- preset alias for forthcoming `preset` section compatibility. **Introduced in [v1.12.0](/anomaly-detection/changelog/#v1120).**
+
url
- writer or reader url endpoint.
code
- response status code or `connection_error`, `timeout`.
-step
- json or dataframe reading step.
\ No newline at end of file
+step
- json or dataframe reading step.
diff --git a/docs/enterprise.md b/docs/enterprise.md
index 3fb342b178..5984b07d6e 100644
--- a/docs/enterprise.md
+++ b/docs/enterprise.md
@@ -55,6 +55,7 @@ On top of this, Enterprise package of VictoriaMetrics includes the following fea
by specifying different retentions for different datasets.
- [Automatic discovery of vmstorage nodes](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#automatic-vmstorage-discovery) -
this feature allows updating the list of `vmstorage` nodes at `vminsert` and `vmselect` without the need to restart these services.
+- [Anomaly Detection Service](https://docs.victoriametrics.com/anomaly-detection) - this feature allows automation and simplification of your alerting rules, covering [complex anomalies](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-2/) found in metrics data.
- [Backup automation](https://docs.victoriametrics.com/vmbackupmanager.html).
- [Advanced per-tenant stats](https://docs.victoriametrics.com/PerTenantStatistic.html).
- [Advanced auth and rate limiter](https://docs.victoriametrics.com/vmgateway.html).
@@ -66,7 +67,6 @@ On top of this, Enterprise package of VictoriaMetrics includes the following fea
- [Multitenant support in vmalert](https://docs.victoriametrics.com/vmalert.html#multitenancy).
- [Ability to read alerting and recording rules from Object Storage](https://docs.victoriametrics.com/vmalert.html#reading-rules-from-object-storage).
- [Ability to filter incoming requests by IP at vmauth](https://docs.victoriametrics.com/vmauth.html#ip-filters).
-- [Anomaly Detection Service](https://docs.victoriametrics.com/anomaly-detection).
Contact us via [this page](https://victoriametrics.com/products/enterprise/) if you are interested in VictoriaMetrics Enterprise.
diff --git a/docs/vmalert.md b/docs/vmalert.md
index bc1a8a043e..c32136830e 100644
--- a/docs/vmalert.md
+++ b/docs/vmalert.md
@@ -114,6 +114,8 @@ groups:
[ -