Deploying VictoriaMetrics in Cluster Mode (by Components)
VictoriaMetrics in Cluster Mode consists of several components that can be deployed separately for horizontal scaling and high availability.
Components in Cluster Mode:
Component | Description |
---|---|
VMInsert | Receives data from Prometheus/Graphite/OpenTSDB and forwards it to VMStorage. |
VMSelect | Executes queries against VMStorage and connects to Grafana and PromQL. |
VMStorage | The main data storage, works with SSTable (similar to TSDB in Prometheus). |
VMAgent | An alternative to Prometheus, collects metrics from endpoints. |
VMAlert | Sends alerts, similar to Alertmanager. |
1. Running VictoriaMetrics Cluster with Docker Compose
This setup deploys all components with the necessary port mappings.
docker-compose.yml File
version: '3.7'
services:
vmstorage:
image: victoriametrics/vmstorage
container_name: vmstorage
restart: always
ports:
- "8400:8400"
volumes:
- ./data:/storage
command:
- "-storageDataPath=/storage"
- "-retentionPeriod=30" # Store metrics for 30 days
vminsert:
image: victoriametrics/vminsert
container_name: vminsert
restart: always
ports:
- "8480:8480"
command:
- "-storageNode=vmstorage:8400"
vmselect:
image: victoriametrics/vmselect
container_name: vmselect
restart: always
ports:
- "8428:8428"
command:
- "-storageNode=vmstorage:8400"
vmagent:
image: victoriametrics/vmagent
container_name: vmagent
restart: always
ports:
- "8429:8429"
command:
- "-remoteWrite.url=http://vminsert:8480/insert/0/prometheus"
vmalert:
image: victoriametrics/vmalert
container_name: vmalert
restart: always
ports:
- "8880:8880"
command:
- "-datasource.url=http://vmselect:8428"
- "-remoteWrite.url=http://vminsert:8480"
Starting the Cluster
docker-compose up -d
Now the components are accessible at:
- VMInsert (metric ingestion):
http://localhost:8480/insert/0/prometheus
- VMSelect (queries for Grafana):
http://localhost:8428
- VMStorage (main storage):
http://localhost:8400
- VMAgent (metric collector):
http://localhost:8429
- VMAlert (alerting):
http://localhost:8880
2. Configuring Grafana with VictoriaMetrics
Adding Data Source in Grafana
- Open Grafana (
http://localhost:3000
). - Navigate to Configuration β Data Sources.
- Click Add Data Source.
- Select Prometheus.
- In the URL field, enter:
http://localhost:8428
- Click Save & Test.
Now Grafana can query VictoriaMetrics using PromQL.
3. Example Metrics and Queries
Example PromQL Queries for Grafana
- CPU Usage:
rate(node_cpu_seconds_total[5m])
- Memory Usage:
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100
- Number of Active Pods in Kubernetes:
count(kube_pod_info)
Conclusion
β
Successfully deployed VictoriaMetrics in Cluster Mode
β
Connected Grafana
β
Ready to collect and analyze metrics
The system is now scalable, resilient, and capable of processing metrics efficiently!