一、什么是时序数据
二、 VictoriaMetrics的优点
-
prometheus(默认保留15天)是基于prometheus长期存储的一种方案
-
基于PromQL的查询语言,即MetricsQL,并且在PromQL基础上做了改进
-
安装简单:单节点架构一条命令就可以部署完毕(集群方式稍微复杂一些,但也很好理解)
-
兼容性:PromQL兼容和增强的MetricsQL
-
Grafana兼容:VM可替换Grafana的Prometheus数据源(经测试,线上数据源直接替换后100%兼容)
-
低内存:更低的内存占用,官方对比Prometheus,可以释放7倍左右内存空间(线上对比大概4倍)
-
高压缩比:提供存储数据高压缩,官方说可以比Prometheus减少7倍的存储空间(线上对比大概是4~5倍)
-
高性能:查询性能比Prometheus更快
-
支持水平扩容&HA:基于VM集群版实现
-
支持多租户:主要针对集群版本
三、VM的部署架构与HA
- 副本、分片、及HA
- 副本
- vminsert:按算法为固定时间序列选择后端存储(分片) 和 控制副本数量(副本)replicationFactor,开启副本,并控制副本数量,既 要往多少个vmstorage插入同一份样本数据
- vmstorage:数据存储,vmstorage节点间不进行任何交互,都是独立的个体,只靠上层的vminsert,产生副本和分片dedup.minScrapeInterval,vmagent会产生replicationFactor份冗余数据,需要此参数,来去除重复数据
- vmselect:数据汇总以及返回,当vminsert开启副本后,vmselect必须设置dedup.minScrapeInterval dedup.minScrapeInterval,去除指定时间的重复数据
- 注意:副本的开启和修改副本数可能会造成数据的部分丢失,如何避免?
- 分片
- 如果vminsert后面存在多个vmstorage,vminsert就会对数据进行分片(或者说打散),vminsert主要通过一致性哈希选择vmstorage节点
- 扩容方案
- 查询速度过慢:vmselect为无态服务,配置信息都一样,直接扩容,即可解决此问题。
- 数据录入慢:vminsert和vmselect一样,直接扩容即可。
- 容量不足:vmstorage水平扩容来解决此问题,因为vmstorage是有态服务,扩容要配合上游组件服务一起。vmstorage各节点配置一样,直接扩容即可。同时需要把上游的vmselect和vminsert的存储列表(-storageNode)进行更新,然后全部重启。
- 抓取样本量过大:扩容vmagent即可,但需要重新分配所有vmagent对target的分组参数,-promscrape.cluster.membersCount=N 增加总分组数,-promscrape.cluster.memberNum=(0~N-1) 当前vmagent节点所在分组号,修改完后重启所有vmagent。
- 副本
四、数据写入与查询
- 原生格式导入https://blog.csdn.net/forrest420/article/details/120846242
- VM-UI访问地址:http://10.0.2.51:8481/select/accountId:projectId/vmui/
- 写入验证