Victoria Metrics Anomaly Detection - a service that continuously scans Victoria Metrics time series and detects unexpected changes within data patterns in real-time.
-
Install the follow packages:
git
,kubectl
,helm
,helm-docs
. See this tutorial. -
PV support on underlying infrastructure
This chart will do the following:
- Rollout victoria metrics anomaly
Access a Kubernetes cluster.
Add a chart helm repository with follow commands:
helm repo add vm https://victoriametrics.github.io/helm-charts/
helm repo update
List versions of vm/victoria-metrics-anomaly
chart available to installation:
helm search repo vm/victoria-metrics-anomaly -l
Export default values of victoria-metrics-anomaly
chart to file values.yaml
:
helm show values vm/victoria-metrics-anomaly > values.yaml
Change the values according to the need of the environment in values.yaml
file.
Test the installation with command:
helm install vmanomaly vm/victoria-metrics-anomaly -f values.yaml -n NAMESPACE --debug --dry-run
Install chart with command:
helm install vmanomaly vm/victoria-metrics-anomaly -f values.yaml -n NAMESPACE
Get the pods lists by running this commands:
kubectl get pods -A | grep 'vmanomaly'
Get the application by running this command:
helm list -f vmanomaly -n NAMESPACE
See the history of versions of vmanomaly
application with command.
helm history vmanomaly -n NAMESPACE
Remove application with command.
helm uninstall vmanomaly -n NAMESPACE
Install helm-docs
following the instructions on this tutorial.
Generate docs with helm-docs
command.
cd charts/victoria-metrics-anomaly
helm-docs
The markdown generation is entirely go template driven. The tool parses metadata from charts and generates a number of sub-templates that can be referenced in a template file (by default README.md.gotmpl
). If no template file is provided, the tool has a default internal template that will generate a reasonably formatted README.
The following tables lists the configurable parameters of the chart and their default values.
Change the values according to the need of the environment in victoria-metrics-anomaly/values.yaml
file.
Key | Type | Default | Description |
---|---|---|---|
affinity | object | {} |
Affinity configurations |
annotations | object | {} |
Annotations to be added to the deployment |
containerWorkingDir | string | "/vmanomaly" |
|
env | list | [] |
Additional environment variables (ex.: secret tokens, flags) |
eula | bool | false |
should be true and means that you have the legal right to run a vmanomaly that can either be a signed contract or an email with confirmation to run the service in a trial period https://victoriametrics.com/legal/esa/ |
extraArgs.loggerFormat | string | "json" |
|
extraContainers | list | [] |
|
extraHostPathMounts | list | [] |
Additional hostPath mounts |
extraVolumeMounts | list | [] |
Extra Volume Mounts for the container |
extraVolumes | list | [] |
Extra Volumes for the pod |
extra_labels | object | {} |
|
fullnameOverride | string | "" |
|
image.pullPolicy | string | "IfNotPresent" |
Pull policy of Docker image |
image.repository | string | "us-docker.pkg.dev/victoriametrics-test/public/vmanomaly-trial" |
Victoria Metrics anomaly Docker repository and image name |
image.tag | string | "" |
Tag of Docker image |
imagePullSecrets | list | [] |
|
license | object | {"key":"","secret":{"key":"","name":""}} |
License key configuration for vmanomaly. See https://docs.victoriametrics.com/vmanomaly.html#licensing Required starting from v1.5.0. |
license.key | string | "" |
License key for vmanomaly |
license.secret | object | {"key":"","name":""} |
Use existing secret with license key for vmanomaly |
license.secret.key | string | "" |
Key in secret with license key |
license.secret.name | string | "" |
Existing secret name |
model.enabled | string | "prophet" |
Available options: zscore, prophet, holt_winters |
model.holt_winters.frequency | string | "1h" |
|
model.holt_winters.seasonality | string | "1d" |
|
model.prophet.interval_width | float | 0.98 |
|
model.zscore.z_threshold | float | 2.5 |
|
monitoring | object | {"pull":{"enabled":false,"port":8440},"push":{"extra_labels":{"job":"vmanomaly-push"},"url":""}} |
vmanomaly internal monitoring in Prometheus format |
monitoring.pull.enabled | bool | false |
if true expose metrics on /metrics endpoint |
monitoring.pull.port | int | 8440 |
port for /metrics endpoint |
monitoring.push.url | string | "" |
push metrics on prometheus format if defined |
nameOverride | string | "" |
|
nodeSelector | object | {} |
NodeSelector configurations. Ref: https://kubernetes.io/docs/user-guide/node-selection/ |
podAnnotations | object | {} |
Annotations to be added to pod |
podDisruptionBudget | object | {"enabled":false,"labels":{}} |
See kubectl explain poddisruptionbudget.spec for more. Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ |
podSecurityContext | object | {} |
|
queries | object | {} |
Query names and expressions. Required. Examples: active_timeseries: 'sum(vm_cache_entries{type="storage/hour_metric_ids"})' churn_rate: 'sum(rate(vm_new_timeseries_created_total[5m]))' ingestion_rate: 'sum(rate(vm_rows_inserted_total[5m])) by (type,accountID) > 0' insertion_rate: 'sum(rate(vm_http_requests_total{path=~"/api/v1/write |
remote.read.basicAuth.password | string | "" |
|
remote.read.basicAuth.username | string | "" |
|
remote.read.bearer_token | string | "" |
Bearer token to use for authentication |
remote.read.extra_filters | list | [] |
List of extra filters to apply to all queries. See: https://docs.victoriametrics.com/#prometheus-querying-api-enhancements |
remote.read.health | string | "" |
Health endpoint. vmanomaly add /health to url if it's empty. You can specify full path when VictoriaMetircs is hidden via vmauth or other proxies/balancers |
remote.read.tenant_id | string | "" |
When read from VictoriaMetrics cluster. Format: vm_account_id:vm_project_id (for example: 0:0) or vm_account_id (for example 0). See https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#multitenancy |
remote.read.url | string | "" |
URL for data reading. Required for example "http://single-victoria-metrics-single-server.default.svc.cluster.local:8428" or "http://cluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local:8481/select/" |
remote.read.verify_tls | bool | true |
Whether to verify TLS certificates when connecting to read endpoint |
remote.write.basicAuth.password | string | "" |
|
remote.write.basicAuth.username | string | "" |
|
remote.write.bearer_token | string | "" |
Bearer token to use for authentication |
remote.write.health | string | "" |
Health endpoint. vmanomaly add /health to url if it's empty. You can specify full path when VictoriaMetircs is hidden via vmauth or other proxies/balancers |
remote.write.metric_format.name | string | "$VAR" |
|
remote.write.metric_format.query_key | string | "query" |
|
remote.write.tenant | string | "" |
When write to VictoriaMetrics cluster. Format: vm_account_id:vm_project_id (for example: 0:0) or vm_account_id (for example 0). See https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#multitenancy |
remote.write.url | string | "" |
URL for data writing. Required for example "http://single-victoria-metrics-single-server.default.svc.cluster.local:8428" or "http://cluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local:8480/insert/" |
remote.write.verify_tls | bool | true |
Whether to verify TLS certificates when connecting to write endpoint |
resources | object | {} |
|
samplingPeriod | string | "1m" |
|
scheduler.class | string | "scheduler.periodic.PeriodicScheduler" |
|
scheduler.fit_every | string | "2h" |
|
scheduler.fit_window | string | "14d" |
|
scheduler.infer_every | string | "1m" |
|
securityContext.runAsGroup | int | 1000 |
|
securityContext.runAsNonRoot | bool | true |
|
securityContext.runAsUser | int | 1000 |
|
serviceAccount.annotations | object | {} |
|
serviceAccount.create | bool | true |
|
serviceAccount.name | string | nil |
|
serviceMonitor.annotations | object | {} |
|
serviceMonitor.enabled | bool | false |
|
serviceMonitor.extraLabels | object | {} |
|
tolerations | list | [] |
Tolerations configurations. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ |