使用VictoriaMetrics 对Prometheus的数据进行分布式存储

前言

Prometheus 就是一个很好的时序数据库,对于监控数据量没有超过千万级的 情况下没必要进行分布式存储。一般的监控数据存3个月以内即可,所以数据量并不会很大。

并且生产环境可以搞多个Proms数据源在Grafana中做统一的告警。并且在时序数据库的排名表如下, VictoriaMetrics  都排不上号。

官网

##  github
https://github.com/VictoriaMetrics/operator

### 
https://github.com/VictoriaMetrics/VictoriaMetrics/

## web
https://victoriametrics.com/

##  参考文档
https://www.nestealin.com/7dbee069/

VictoriaMetrics 优点

当前单节点Prometheus集中存储多个集群数据,官方架构问题无法横向扩展优化。数据可异地存储。

  • 需要分布式数据存储,支持并发查询,优化查询性能
  • 可以兼容Prometheus写入或服务端中转写入
  • 可支持数据副本(次要)
  • VictoriaMetrics是一个快速、高效和可扩展的时序数据库,可作为Prometheus的长期存储,比如要存监控数据半年或者一年以上
  • VictoriaMetrics支持PromQL查询语言,也支持Influxdb行协议,对当前主流的时序协议支持比较好

VictoriaMetrics 架构图

单实例的 victoriametric只有一个进程。

集群版的victoriametrics有3类进程,即3类微服务组成:

  • vmstorage: 数据存储节点,负责存储时序数据;
  • vmselect: 数据查询节点,负责接收用户查询请求,向vmstorage查询时序数据;
  • vminsert: 数据插入节点,负责接收用户插入请求,向vmstorage写入时序数据;

在部署时可以按照需求,不同的微服务部署不同的副本,以应对业务需求:

  • 若数据量比较大,部署较多的vmstorage副本;
  • 若查询请求比较多,部署较多的vmselect副本;
  • 若插入请求比较多,部署较多的vminsert副本;


集群中vmselect、vminsert节点都是无状态的,唯一有状态的是vmstorage。

部署模式

单节点版

直接运行一个二进制文件,既可以运行,官方建议采集数据点(data points)低于100w/s,推荐VM单节点版,简单好维护,但不支持告警。

集群版

支持数据水平拆分,把功能拆分为vmstorage、 vminsert、vmselect,如果要替换Prometheus,还需要vmagent、vmalert。

集群版主要特点:

  • 支持单节点版本的所有功能。
  • 性能和容量水平扩展。
  • 支持时间序列数据的多个独立命名空间(多租户)。
  • 支持多副本。
  • 图表功能比Proms强大

单机部署实践

## 
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.84.0/victoria-metrics-linux-amd64-v1.84.0.tar.gz

##
systemctl enable --now victoria-metrics-prod.service

编写启动文件

vim /etc/systemd/system/victoria-metrics-prod.service

[Unit]
Description=For Victoria-metrics-prod Service
After=network.target

[Service]
ExecStart=/opt/victoria-metrics/victoria-metrics-prod -storageDataPath=/opt/victoria-metrics/data -retentionPeriod=3

[Install]
WantedBy=multi-user.target

配置Prometheus:

## 写入其他时序数据库
remote_write:
  - url: http://10.10.10.120:8428/api/v1/write

验证:

###
http://10.10.10.120:8428/vmui/

添加Grafana数据源

因为Prometheus的数据是 存其他时序数据库,所以你原来的Prometheus数据源也是可以查到数据的,两者不冲突。

当然你也可以配置 vm的数据源查数据。因为vm支持PromsSQL。 Grafana 导入指定模板:8919

集群部署

集群部署可以通过helm或者在K8S里进行部署的。

### 集群部署
https://github.com/prometheus-operator/prometheus-operator


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叱咤少帅(少帅)

如果文章对你有帮助就打赏下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值