- moved files from root to VictoriaMetrics folder to be able to mount operator docs and VictoriaMetrics docs independently - added ability to run website locally The following checks are **mandatory**: - [ ] My change adheres [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/contributing/).
3.5 KiB
This chapter describes different components, that correspond to respective sections of a config to launch VictoriaMetrics Anomaly Detection (or simply vmanomaly
) service:
- Model(s) section - Required
- Reader section - Required
- Scheduler(s) section - Required
- Writer section - Required
- Monitoring section - Optional
Note
: starting from v1.7.0, once the service starts, automated config validation is performed. Please see container logs for errors that need to be fixed to create fully valid config, visiting sections above for examples and documentation.
Note
: starting from v1.13.0, components' class can be referenced by a short alias instead of a full class path - i.e.
model.zscore.ZscoreModel
becomeszscore
,reader.vm.VmReader
becomesvm
,scheduler.periodic.PeriodicScheduler
becomesperiodic
, etc. Please see according sections for the details.
Note: Starting from v1.13.0
preset
modes are available forvmanomaly
. Please find the guide here.
Below, you will find an example illustrating how the components of vmanomaly
interact with each other and with a single-node VictoriaMetrics setup.
Note
: Reader and Writer also support multitenancy, so you can read/write from/to different locations - see
tenant_id
param description.
Here's a minimalistic full config example, demonstrating many-to-many configuration (actual for latest version):
{{% ref "./scheduler.md" %}}
schedulers:
periodic_1d: # alias
class: 'periodic' # scheduler class
infer_every: "30s"
fit_every: "10m"
fit_window: "24h"
periodic_1w:
class: 'periodic'
infer_every: "15m"
fit_every: "1h"
fit_window: "7d"
# what model types and with what hyperparams to run on your data
# {{% ref "./models.md" %}}
models:
zscore: # alias
class: 'zscore' # model class
z_threshold: 3.5
provide_series: ['anomaly_score'] # what series to produce
queries: ['host_network_receive_errors'] # what queries to run particular model on
schedulers: ['periodic_1d'] # will be attached to 1-day schedule, fit every 10m and infer every 30s
prophet: # alias
class: 'prophet'
provide_series: ['anomaly_score', 'yhat', 'yhat_lower', 'yhat_upper']
queries: ['cpu_seconds_total']
schedulers: ['periodic_1w'] # will be attached to 1-week schedule, fit every 1h and infer every 15m
args: # model-specific arguments
interval_width: 0.98
# where to read data from
# {{% ref "./reader.md" %}}
reader:
datasource_url: "http://victoriametrics:8428/"
tenant_id: "0:0"
class: 'vm'
sampling_period: "30s" # what data resolution of your data to have
queries: # aliases to MetricsQL expressions
cpu_seconds_total: 'avg(rate(node_cpu_seconds_total[5m])) by (mode)'
host_network_receive_errors: 'rate(node_network_receive_errs_total[3m]) / rate(node_network_receive_packets_total[3m])'
# where to write data to
# {{% ref "./writer.md" %}}
writer:
datasource_url: "http://victoriametrics:8428/"
# enable self-monitoring in pull and/or push mode
# {{% ref "./monitoring.md" %}}
monitoring:
pull: # Enable /metrics endpoint.
addr: "0.0.0.0"
port: 8490