VictoriaMetrics是一个开源的时序数据库和监控系统。它是为大规模的时序数据而设计的,可以扩展到数十亿数据点,具有高可用性和高性能。
一、VictoriaMetrics特性:
高性能:VictoriaMetrics采用了一些优化技术,如块存储、压缩、索引等,可以在不牺牲查询性能的情况下,大大减少存储空间。
高可用性:VictoriaMetrics具有多副本的数据复制机制,可以保证数据的可靠性和高可用性。
易于部署和管理:VictoriaMetrics可以在多种操作系统上运行,支持Docker容器化部署,同时也提供了易于使用的Web界面和API。
支持多种数据格式和协议:VictoriaMetrics支持多种时序数据格式和协议,如Prometheus、Graphite、InfluxDB等,可以轻松地与其他监控系统集成。
开源免费:VictoriaMetrics是一个开源项目,可以免费使用和修改。
总之,VictoriaMetrics是一个快速、可靠、易于部署和管理的时序数据库和监控系统,适用于各种规模的时序数据存储和查询。
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.110.4/victoria-metrics-linux-amd64-v1.110.4.tar.gztar xzf victoria-metrics-*.tar.gzmv victoria-metrics-prod usr/local/bin/
服务启动配置
创建systemd服务文件/etc/systemd/system/vm.service:
[Unit]Description=VictoriaMetrics Time Series DatabaseAfter=network.target[Service]ExecStart=/usr/bin/victoria-metrics-prod \-storageDataPath=/var/lib/victoriametrics \-retentionPeriod=12 \-httpListenAddr=:8428Restart=alwaysUser=vmuser[Install]WantedBy=multi-user.target
三、集群模式部署要点

节点角色划分
vminsert:数据写入节点(可水平扩展)
vmselect:查询处理节点(支持负载均衡)
vmstorage:数据存储节点(建议3节点起)
配置示例(vmstorage节点)
nohup ./vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath ./vmstorage-data -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401 &> vmstor.log &nohup ./vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath ./1vmstorage-data -httpListenAddr :18482 -vminsertAddr :18400 -vmselectAddr :18401 &> 1vmstor.log &nohup ./vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath ./2vmstorage-data -httpListenAddr :28482 -vminsertAddr :28400 -vmselectAddr :28401 &> 2vmstor.log &
或使用如下脚本:
#!/bin/bashfor i in `seq 0 2`; doif [ $i -eq 0 ]; theni=""fipp=$ihttpListenAddr=${pp}8482vminsertAddr=${pp}8400vmselectAddr=${pp}8401storageDataPath=./${pp}vmstorage-dataprog="nohup ./vmstorage-prod -loggerTimezone Asia/Shanghai \-storageDataPath $storageDataPath \-httpListenAddr :$httpListenAddr \-vminsertAddr :$vminsertAddr \-vmselectAddr :$vmselectAddr \&> ${pp}vmstor.log &"echo $prog(exec "$prog")done
启动一个 vminsert 实例:
nohup ./vminsert-prod -httpListenAddr :8480 -storageNode=127.0.0.1:8400,127.0.0.1:18400,127.0.0.1:28400 &>vminsert.log &
启动一个 vmselect 实例:
nohup ./vmselect-prod -httpListenAddr :8481 -storageNode=127.0.0.1:8401,127.0.0.1:18401,127.0.0.1:28401 &>vmselect.log &
查看 vmstorage,vminsert,vmselect 的 /metrics 接口:
curl http://127.0.0.1:8482/metricscurl http://127.0.0.1:18482/metricscurl http://127.0.0.1:28482/metricscurl http://127.0.0.1:8481/metricscurl http://127.0.0.1:8480/metrics
负载均衡配置
使用Nginx反向代理vmselect节点
配置Prometheus的remote_write指向vminsert集群VIP
四、配置优化建议
数据存储
设置-storageDataPath独立磁盘分区
启用-snapshotAuthKey保护快照操作
调整-memory.allowedPercent限制内存使用率
-retentionPeriod:数据的保留时间。历史的数据会被自动清理删除。默认的保留时间是 1 个月。最小的保留时间是 1 天(即 24 小时)
查询优化
配置-search.maxQueryDuration防止长查询拖垮系统
启用-search.trackDoneQueries分析慢查询
五、运维管理操作
数据备份恢复
# 创建快照curl http://localhost:8428/snapshot/create# 使用vmbackup工具vmbackup -storageDataPath=/var/lib/victoriametrics -dst=gs://backup-bucket/
六、故障排查指南
常见问题处理
启动失败:检查-storageDataPath目录权限(需vmuser用户可写)
查询超时:检查-search.maxSeries参数是否过小
磁盘爆满:设置-retentionPeriod自动淘汰旧数据
监控指标采集
建议通过内置的/metrics接口采集:
vm_ingested_samples_total 写入速率
vm_free_disk_space_bytes 磁盘使用量
vm_cache_entries{type="indexdb"} 索引缓存状态
VictoriaMetrics 架构设计上更倾向于简单可靠,重点优化了单机版的性能,强调垂直扩展,同时和 prometheus 生态做到兼容,甚至于在很多的点上做到了加强。但是 VictoriaMetrics 对于时序数据 downsample,节点的自动扩缩容,数据自动再平衡等高级功能和分布式能力,是有缺失的




