VictoriaMetrics Plugin
Monitor VictoriaMetrics time-series database with comprehensive metrics covering storage statistics, query performance, ingestion rates, and resource usage.
Overview
The VictoriaMetrics plugin collects detailed metrics from VictoriaMetrics API including:
- Storage Statistics - Active series, total samples, storage size
- Ingestion Metrics - Rows ingested, ingestion rate, data points per second
- Query Performance - Query rate, query duration, slow queries
- Cache Statistics - Index cache, data cache, merge statistics
- Resource Usage - Memory usage, disk usage, CPU time
- Retention Metrics - Data retention period, old data cleanup
Requirements
VictoriaMetrics Version
- Minimum: VictoriaMetrics 1.80
- Recommended: VictoriaMetrics 1.95 or later
- Tested with: VictoriaMetrics 1.85, 1.90, 1.95, 1.96
Python Dependencies
pip install requests>=2.28.0
Auto-installed when using PLUGINS=victoriametrics
during agent installation.
VictoriaMetrics Access
The agent needs HTTP access to VictoriaMetrics API (default port 8428).
Configuration
Basic Configuration
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
With Authentication
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
username: admin
password: password
With HTTPS
plugins:
victoriametrics:
enabled: true
host: victoria.example.com
port: 8428
use_ssl: true
verify_ssl: true
All Configuration Options
plugins:
victoriametrics:
enabled: true # Enable/disable plugin
host: localhost # VictoriaMetrics host
port: 8428 # VictoriaMetrics port
username: "" # HTTP auth username (optional)
password: "" # HTTP auth password (optional)
use_ssl: false # Use HTTPS
verify_ssl: true # Verify SSL certificates
timeout: 10 # Request timeout (seconds)
Environment Variables
Configuration can be overridden with environment variables:
export VICTORIAMETRICS_HOST="localhost"
export VICTORIAMETRICS_PORT="8428"
VictoriaMetrics Setup
Installation
Binary installation:
# Download latest release
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.95.1/victoria-metrics-linux-amd64-v1.95.1.tar.gz
# Extract
tar -xzf victoria-metrics-linux-amd64-v1.95.1.tar.gz
# Run VictoriaMetrics
./victoria-metrics-prod
Docker:
docker run -d \
--name victoriametrics \
-p 8428:8428 \
-v /var/lib/victoria-metrics:/victoria-metrics-data \
victoriametrics/victoria-metrics:latest
As systemd service:
sudo nano /etc/systemd/system/victoriametrics.service
[Unit]
Description=VictoriaMetrics
After=network.target
[Service]
Type=simple
User=victoriametrics
WorkingDirectory=/var/lib/victoriametrics
ExecStart=/usr/local/bin/victoria-metrics-prod \
-storageDataPath=/var/lib/victoriametrics \
-httpListenAddr=:8428 \
-retentionPeriod=12
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start victoriametrics
sudo systemctl enable victoriametrics
Collected Metrics
Ingestion Metrics
Metric | Description | Unit | Type |
---|---|---|---|
rows_inserted_total |
Total rows inserted | Count | Counter |
rows_dropped_total |
Total rows dropped | Count | Counter |
slow_inserts_total |
Total slow row inserts | Count | Counter |
ingestion_rate |
Ingestion rate (calculated) | Rows/s | Gauge |
Storage Metrics
Metric | Description | Unit | Type |
---|---|---|---|
active_series |
Active time series count | Count | Gauge |
storage_size_gb |
Storage size on disk (indexdb) | GB | Gauge |
free_disk_gb |
Free disk space | GB | Gauge |
Resource Metrics
Metric | Description | Unit | Type |
---|---|---|---|
memory_usage_mb |
Process resident memory | MB | Gauge |
HTTP Metrics
Metric | Description | Unit | Type |
---|---|---|---|
http_requests_total |
Total HTTP requests | Count | Counter |
Dashboard Metrics
The StatusRadar dashboard displays:
Overview Card
- Active Series - Current time series count
- Storage Size - Total data size on disk
- Ingestion Rate - Rows per second
- Query Rate - Queries per second
Storage Usage Chart
- Data size over time
- Index size
- Total storage growth
Ingestion Rate Chart
- Rows inserted per second
- Active time series count
Query Performance Chart
- Query rate
- Average query duration
- Slow queries
Cache Performance Chart
- Cache hit rate
- Cache size
- Cache entries
Memory Usage Chart
- Memory usage over time
- Memory growth rate
Installation
Quick Install
PLUGINS='victoriametrics' \
TOKEN='your-agent-token' \
bash -c "$(curl -sL https://statusradar.dev/install-agent.sh)"
Install on Existing Agent
-
Configure agent:
sudo nano /opt/statusradar/config/agent.yaml
Add:
plugins: victoriametrics: enabled: true host: localhost port: 8428
-
Restart agent:
sudo systemctl restart statusradar-agent
-
Verify:
sudo journalctl -u statusradar-agent -n 50 --no-pager | grep victoriametrics
Expected:
INFO: Plugin victoriametrics: Metrics collected successfully INFO: Plugin victoriametrics: 12345 active series, 1.2 GB storage
Testing
Manual Plugin Test
cd /opt/statusradar
python3 plugins/victoriametrics_plugin.py
Expected Output:
Plugin: victoriametrics
Enabled: True
Available: True
Collecting metrics...
{
"vm_rows": 123456789,
"vm_active_time_series": 12345,
"vm_data_size_bytes": 1288490188,
"vm_rows_per_second": 1250.5,
"vm_requests_total": 45678,
"vm_cache_hits_total": 89012,
"vm_cache_misses_total": 3456,
"vm_memory_bytes": 536870912
}
Test VictoriaMetrics API
# Metrics endpoint
curl http://localhost:8428/metrics
# Query API
curl 'http://localhost:8428/api/v1/query?query=up'
# Label values
curl 'http://localhost:8428/api/v1/label/__name__/values'
Troubleshooting
Plugin Not Collecting Metrics
Check 1: Is VictoriaMetrics running?
sudo systemctl status victoriametrics
# Or check process:
ps aux | grep victoria-metrics
Check 2: Can agent access VictoriaMetrics?
curl http://localhost:8428/metrics
Check 3: Check agent logs
sudo journalctl -u statusradar-agent -n 100 --no-pager | grep victoriametrics
Common Errors
"Connection refused"
Error:
ERROR: Plugin victoriametrics: Connection refused
Causes:
- VictoriaMetrics not running
- Wrong host/port
- Firewall blocking connection
Solution:
# Check VictoriaMetrics is running
ps aux | grep victoria-metrics
# Check port
sudo netstat -tlnp | grep 8428
# Test connection
curl http://localhost:8428/metrics
"Authentication required"
Error:
ERROR: Plugin victoriametrics: 401 Unauthorized
Solution:
Add authentication to config:
plugins:
victoriametrics:
username: admin
password: your-password
Performance Impact
On VictoriaMetrics
Minimal impact:
- Metrics endpoint returns pre-calculated statistics
- No query execution overhead
- Response time: < 50ms
Benchmark:
- Overhead: < 0.1% CPU
- No measurable performance degradation
On Agent
Resource usage:
- Memory: +10 MB
- CPU: +2% during collection
- Network: +2 KB per collection
Collection time: < 0.3 seconds
Use Cases
1. Storage Growth Monitoring
Monitor:
- Data size growth rate
- Index size
- Active time series count
Alert on:
- Rapid storage growth
- Storage approaching disk limit
- Excessive time series cardinality
2. Ingestion Rate Monitoring
Monitor:
- Rows per second
- Ingestion spikes
- Slow inserts
Alert on:
- Ingestion rate drop (data loss)
- Ingestion spike (DDoS/bug)
3. Query Performance
Monitor:
- Query rate
- Query duration
- Slow queries
Optimize:
- Query patterns
- Index usage
- Cache configuration
4. Resource Usage
Monitor:
- Memory usage
- Disk usage
- CPU usage
Alert on:
- Memory > 80%
- Disk > 90%
- High CPU sustained
Best Practices
1. Set Retention Period
# Retain data for 12 months
./victoria-metrics-prod -retentionPeriod=12
Calculate retention:
Disk needed = (Ingestion rate ร Average sample size ร Retention seconds)
Example:
10k samples/sec ร 1 byte ร 31536000 sec (1 year) = 315 GB
2. Monitor Cardinality
High cardinality = memory issues
Check active series:
curl 'http://localhost:8428/api/v1/query?query=vm_active_time_series'
Reduce cardinality:
- Avoid high-cardinality labels (IDs, timestamps)
- Use relabeling to drop unnecessary labels
- Aggregate at source
3. Optimize Storage
Enable deduplication:
./victoria-metrics-prod -dedup.minScrapeInterval=60s
Set memory limit:
./victoria-metrics-prod -memory.allowedPercent=80
4. Configure Cache
# Index cache
./victoria-metrics-prod -storage.cacheSizeIndexDBDataBlocks=8GB
# Storage cache
./victoria-metrics-prod -storage.cacheSizeStorageTSID=2GB
5. Monitor Merge Performance
# Check merge metrics
curl http://localhost:8428/metrics | grep vm_merge
Slow merges indicate:
- Insufficient disk I/O
- Too many small parts
- Memory pressure
VictoriaMetrics Performance Tuning
Memory Optimization
# Limit memory usage
./victoria-metrics-prod \
-memory.allowedPercent=80 \
-search.maxMemoryPerQuery=2GB
Storage Optimization
# Storage path
./victoria-metrics-prod \
-storageDataPath=/mnt/fast-ssd/victoria-metrics
Use SSD for better performance.
Query Optimization
# Limit concurrent queries
./victoria-metrics-prod \
-search.maxConcurrentRequests=16 \
-search.maxQueueDuration=30s
Advanced Configuration
Cluster Monitoring
Monitor multiple VictoriaMetrics instances:
plugins:
victoria_node1:
enabled: true
host: vm-node1.internal
port: 8428
victoria_node2:
enabled: true
host: vm-node2.internal
port: 8428
Docker Container
Monitor VictoriaMetrics in Docker:
plugins:
victoriametrics:
enabled: true
host: victoriametrics-container
port: 8428
Example Configurations
Basic Production
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
With Authentication
plugins:
victoriametrics:
enabled: true
host: victoria.internal
port: 8428
username: admin
password: ${VICTORIA_PASSWORD}
High-Availability Cluster
plugins:
victoria_storage1:
enabled: true
host: vm-storage1.internal
port: 8428
victoria_storage2:
enabled: true
host: vm-storage2.internal
port: 8428
Limitations
Current Limitations
- No per-metric cardinality - Total series count only
- No slow query details - Query log not analyzed
- No backup status - Backup metrics not collected
Scalability
Tested with:
- 10M+ active time series
- 1M+ samples per second
- TB-sized storage
Performance:
- Metrics endpoint response constant regardless of data size
Monitoring Checklist
Critical:
- Storage approaching disk limit
- High cardinality explosion
- Ingestion rate drop
- Memory > 90%
Important: 5. Slow queries increasing 6. Merge backlog 7. Cache hit rate low
Alert Thresholds
vm_data_size_percent: > 85
vm_active_time_series: > 1000000
vm_rows_per_second: < baseline ร 0.5
vm_memory_percent: > 85
cache_hit_rate: < 80
Troubleshooting Performance
High Memory Usage
Symptom: Memory > 80%
Solutions:
- Reduce cache sizes
- Lower
-memory.allowedPercent
- Reduce query concurrency
- Add more RAM
Slow Queries
Symptom: High query duration
Solutions:
- Optimize query patterns
- Reduce time range
- Increase cache size
- Add more CPU cores
Storage Growth
Symptom: Rapid disk usage growth
Solutions:
- Reduce retention period
- Enable deduplication
- Reduce cardinality
- Aggregate at source
Next Steps
- Overview
- Requirements
- VictoriaMetrics Version
- Python Dependencies
- VictoriaMetrics Access
- Configuration
- Basic Configuration
- With Authentication
- With HTTPS
- All Configuration Options
- Environment Variables
- VictoriaMetrics Setup
- Installation
- Collected Metrics
- Ingestion Metrics
- Storage Metrics
- Resource Metrics
- HTTP Metrics
- Dashboard Metrics
- Overview Card
- Storage Usage Chart
- Ingestion Rate Chart
- Query Performance Chart
- Cache Performance Chart
- Memory Usage Chart
- Installation
- Quick Install
- Install on Existing Agent
- Testing
- Manual Plugin Test
- Test VictoriaMetrics API
- Troubleshooting
- Plugin Not Collecting Metrics
- Common Errors
- Performance Impact
- On VictoriaMetrics
- On Agent
- Use Cases
- 1. Storage Growth Monitoring
- 2. Ingestion Rate Monitoring
- 3. Query Performance
- 4. Resource Usage
- Best Practices
- 1. Set Retention Period
- 2. Monitor Cardinality
- 3. Optimize Storage
- 4. Configure Cache
- 5. Monitor Merge Performance
- VictoriaMetrics Performance Tuning
- Memory Optimization
- Storage Optimization
- Query Optimization
- Advanced Configuration
- Cluster Monitoring
- Docker Container
- Example Configurations
- Basic Production
- With Authentication
- High-Availability Cluster
- Limitations
- Current Limitations
- Scalability
- Monitoring Checklist
- Alert Thresholds
- Troubleshooting Performance
- High Memory Usage
- Slow Queries
- Storage Growth
- Next Steps