VictoriaMetrics Cluster is a free, open source time series database (TSDB) and monitoring solution, designed to collect, store and process real-time metrics.
It supports the Prometheus pull model and various push protocols (Graphite, InfluxDB, OpenTSDB) for data ingestion. It is optimized for storage with high-latency IO, low IOPS and time series with high churn rate.
For reading the data and evaluating alerting rules, VictoriaMetrics supports the PromQL, MetricsQL and Graphite query languages. VictoriaMetrics Cluster is fully autonomous and can be used as a long-term storage for time series. It supports all features of VictoriaMetrics Single; capacity scales horizontally, multiple independent namespaces for time series data (aka multi-tenancy) and replication.
This stack deploys the VictoriaMetrics Kubernetes operator and manages VictoriaMetrics Cluster using native Kubernetes Custom Resources. This removes the complexity of operating VictoriaMetrics Cluster and simplifies working with it.
Package | Version | License |
---|---|---|
VictoriaMetrics Cluster | 1.103.0 | Apache License 2.0 |
vmgent | 1.103.0 | Apache License 2.0 |
vmoperator | v0.48.3 | Apache License 2.0 |
Click the Deploy to DigitalOcean button to install a Kubernetes 1-Click Application. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
In addition to creating VictoriaMetrics Cluster using the control panel, you can also use the DigitalOcean API. As an example, to create a 3 node DigitalOcean Kubernetes cluster made up of Basic Droplets in the SFO2 region, you can use the following doctl
command. You need to authenticate with doctl
with your API access token) and replace the $CLUSTER_NAME
variable with the chosen name for your cluster in the command below.
doctl kubernetes clusters create --size s-4vcpu-8gb $CLUSTER_NAME --1-clicks victoria-metrics-cluster
The VictoriaMetrics Cluster database requires at least two replicas to function effectively. The operator will make it’s best effort to spread all components across nodes to ensure availability.
VictoriaMetrics Cluster = Highly available horizontally scalable monitoring solution optimized for high performance. Supports multiple independent namespaces (aka multi-tenancy) and replication. Cluster version is preferable for large or rapidly growing environments.
vmgent = Lightweight agent that helps users collect metrics from various sources and store them in VictoriaMetrics or any other Prometheus-compatible storage systems.
vmperator = Kubernetes operator for Victoria Metrics = is a tool that creates/configures/manages VictoriaMetrics Cluster’s atop Kubernetes.
After you have downloaded your kube config file, and are able to successfully connect to your Kubernetes cluster (see https://cloud.digitalocean.com/kubernetes/clusters if you haven’t connected to your cluster) follow the instructions below to start using VictoriaMetrics Cluster.
Verify that VictoriaMetrics Cluster and vmagent pods are up and running by executing the following commands:
kubectl get vmclusters
kubectl get vmagents
To remove VictoriaMetrics Cluster and vmagent from your Kubernetes Cluster run the following commands:
kubectl delete vmclusters --all-namespaces --all
kubectl delete vmagents --all-namespaces --all
Run the following command to make vmselect
’s port accessible from the local machine:
kubectl port-forward svc/vmselect-vmcluster 8481:8481
Run the following command to query and retrieve a result from vmselect
:
curl -sg 'http://127.0.0.1:8481/select/0/prometheus/api/v1/query_range?query=vm_app_uptime_seconds' | jq
VictoriaMetrics provides a User Interface (UI) for query troubleshooting and exploration. The UI is available at http://vmselect:8481/select/0/vmui/
. The UI lets users explore query results via graphs and tables.To check it, run the following command to make vmselect
’s port accessible from the local machine:
kubectl port-forward svc/vmselect-vmcluster 8481:8481
Then open in browser http://127.0.0.1:8481/select/0/vmui/
, enter vm_app_uptime_seconds
to the Query Field and Execute Query.