Version: 1.6.3 Artifact Hub Slack GitHub license Twitter Follow Subreddit subscribers

Victoria Metrics Anomaly Detection - a service that continuously scans Victoria Metrics time series and detects unexpected changes within data patterns in real-time.

Prerequisites #

  • Install the follow packages: git, kubectl, helm, helm-docs. See this tutorial.

  • PV support on underlying infrastructure

Chart Details #

This chart will do the following:

  • Rollout victoria metrics anomaly

How to install #

Access a Kubernetes cluster.

Setup chart repository (can be omitted for OCI repositories) #

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

Install victoria-metrics-anomaly chart #

Export default values of victoria-metrics-anomaly chart to file values.yaml:

  • For HTTPS repository

    helm show values vm/victoria-metrics-anomaly > values.yaml
    
  • For OCI repository

    helm show values oci://ghcr.io/victoriametrics/helm-charts/victoria-metrics-anomaly > values.yaml
    

Change the values according to the need of the environment in values.yaml file.

Test the installation with command:

  • For HTTPS repository

    helm install vma vm/victoria-metrics-anomaly -f values.yaml -n NAMESPACE --debug --dry-run
    
  • For OCI repository

    helm install vma oci://ghcr.io/victoriametrics/helm-charts/victoria-metrics-anomaly -f values.yaml -n NAMESPACE --debug --dry-run
    

Install chart with command:

  • For HTTPS repository

    helm install vma vm/victoria-metrics-anomaly -f values.yaml -n NAMESPACE
    
  • For OCI repository

    helm install vma oci://ghcr.io/victoriametrics/helm-charts/victoria-metrics-anomaly -f values.yaml -n NAMESPACE
    

Get the pods lists by running this commands:

kubectl get pods -A | grep 'vma'

Get the application by running this command:

helm list -f vma -n NAMESPACE

See the history of versions of vma application with command.

helm history vma -n NAMESPACE

How to uninstall #

Remove application with command.

helm uninstall vma -n NAMESPACE

Documentation of Helm Chart #

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.

Parameters #

The following tables lists the configurable parameters of the chart and their default values.

For more vmanomaly config parameters see https://docs.victoriametrics.com/anomaly-detection/components

Change the values according to the need of the environment in victoria-metrics-anomaly/values.yaml file.

KeyTypeDefaultDescription
affinityobject
{}

Affinity configurations

annotationsobject
{}

Annotations to be added to the deployment

configobject
models: {}
preset: ""
reader:
    class: vm
    datasource_url: ""
    queries: {}
    sampling_period: 1m
    tenant_id: ""
schedulers: {}
writer:
    class: vm
    datasource_url: ""
    tenant_id: ""

Full vmanomaly config section

config.modelsobject
{}

Models section

config.presetstring
""

Whether to use preset configuration. If not empty, preset name should be specified.

config.readerobject
class: vm
datasource_url: ""
queries: {}
sampling_period: 1m
tenant_id: ""

Reader section

config.reader.classstring
vm

Name of the class needed to enable reading from VictoriaMetrics or Prometheus. VmReader is the default option, if not specified.

config.reader.datasource_urlstring
""

Datasource URL address. 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

config.reader.queriesobject
{}

Required. PromQL/MetricsQL query to select data in format: QUERY_ALIAS: “QUERY”. As accepted by “/query_range?query=%s”. See here for more details.

config.reader.sampling_periodstring
1m

Frequency of the points returned. Will be converted to /query_range?step=%s param (in seconds). Required since 1.9.0.

config.reader.tenant_idstring
""

For VictoriaMetrics Cluster version only, tenants are identified by accountID or accountID:projectID. See VictoriaMetrics Cluster multitenancy docs

config.schedulersobject
{}

Scheduler section

config.writerobject
class: vm
datasource_url: ""
tenant_id: ""

Writer section

config.writer.classstring
vm

Name of the class needed to enable writing to VictoriaMetrics or Prometheus. VmWriter is the default option, if not specified.

config.writer.datasource_urlstring
""

Datasource URL address. 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

config.writer.tenant_idstring
""

For VictoriaMetrics Cluster version only, tenants are identified by accountID or accountID:projectID. See VictoriaMetrics Cluster multitenancy docs

configMapAnnotationsobject
{}

Annotations to be added to configMap

containerWorkingDirstring
/vmanomaly

Container working directory

emptyDirobject
{}

Empty dir configuration when persistence is disabled

envlist
[]

Additional environment variables (ex.: secret tokens, flags)

envFromlist
[]

Specify alternative source for env variables

extraArgsobject
{}

Extra command line arguments for container of component

extraContainerslist
[]

Extra containers to run in a pod with anomaly container

extraHostPathMountslist
[]

Additional hostPath mounts

extraVolumeMountslist
[]

Extra Volume Mounts for the container

extraVolumeslist
[]

Extra Volumes for the pod

fullnameOverridestring
""

Full name prefix override

global.cluster.dnsDomainstring
cluster.local.

K8s cluster domain suffix, uses for building storage pods’ FQDN. Details are here

global.compatibilityobject
openshift:
    adaptSecurityContext: auto

Openshift security context compatibility configuration

global.image.registrystring
""

Image registry, that can be shared across multiple helm charts

global.imagePullSecretslist
[]

Image pull secrets, that can be shared across multiple helm charts

image.pullPolicystring
IfNotPresent

Pull policy of Docker image

image.registrystring
""

Victoria Metrics anomaly Docker registry

image.repositorystring
victoriametrics/vmanomaly

Victoria Metrics anomaly Docker repository and image name

image.tagstring
""

Tag of Docker image

imagePullSecretslist
[]

Image pull secrets

licenseobject
key: ""
secret:
    key: ""
    name: ""

License key configuration for vmanomaly. See docs Required starting from v1.5.0.

license.keystring
""

License key for vmanomaly

license.secretobject
key: ""
name: ""

Use existing secret with license key for vmanomaly

license.secret.keystring
""

Key in secret with license key

license.secret.namestring
""

Existing secret name

nameOverridestring
""

Full name suffix override

nodeSelectorobject
{}

NodeSelector configurations. Details are here

persistentVolumeobject
accessModes:
    - ReadWriteOnce
annotations: {}
dumpData: true
dumpModels: true
enabled: false
existingClaim: ""
matchLabels: {}
size: 1Gi
storageClassName: ""

Persistence to store models on disk. Available starting from v1.13.0

persistentVolume.accessModeslist
- ReadWriteOnce

Array of access modes. Must match those of existing PV or dynamic provisioner. Details are here

persistentVolume.annotationsobject
{}

Persistant volume annotations

persistentVolume.dumpDatabool
true

Enables dumpling data which is fetched from VictoriaMetrics to persistence disk. This is helpful to reduce memory usage.

persistentVolume.dumpModelsbool
true

Enables dumping models to persistence disk. This is helpful to reduce memory usage.

persistentVolume.enabledbool
false

Create/use Persistent Volume Claim for models dump.

persistentVolume.existingClaimstring
""

Existing Claim name. If defined, PVC must be created manually before volume will be bound

persistentVolume.matchLabelsobject
{}

Bind Persistent Volume by labels. Must match all labels of targeted PV.

persistentVolume.sizestring
1Gi

Size of the volume. Should be calculated based on the metrics you send and retention policy you set.

persistentVolume.storageClassNamestring
""

StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically

podAnnotationsobject
{}

Annotations to be added to pod

podDisruptionBudgetobject
enabled: false
labels: {}
minAvailable: 1

See kubectl explain poddisruptionbudget.spec for more. Details are here

podLabelsobject
{}

Labels to be added to pod

podMonitor.annotationsobject
{}

PodMonitor annotations

podMonitor.enabledbool
false

Enable PodMonitor

podMonitor.extraLabelsobject
{}

PodMonitor labels

podSecurityContextobject
enabled: true
fsGroup: 1000

Pod’s security context. Details are here

resourcesobject
{}

Resource object. Details are here

securityContextobject
enabled: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000

Check here for details.

serviceAccount.annotationsobject
{}

Annotations to add to the service account

serviceAccount.createbool
true

Specifies whether a service account should be created

serviceAccount.namestring
null

The name of the service account to use. If not set and create is true, a name is generated using the fullname template

tolerationslist
[]

Tolerations configurations. Details are here