prometheus 远端写存储VictoriaMetrics体验

2022-03-24 00:00:00 修改 集群 节点 部署 配置

VictoriaMetrics是快速,经济高效且可扩展的时间序列数据库。它可以用作Prometheus的长期远程存储(==不支持远端读,但支持通过grafana读取==),使用go 语言编写。可以可以通过二进制文件一次编译,到处部署
github地址(https://github.com/VictoriaMetrics/VictoriaMetrics)

优点:

  • 支持Prometheus查询API,因此可以在Grafana中用作Prometheus的替代产品。VictoriaMetrics实现了受PromQL启发的MetricsQL查询语言。

  • 插入和查询的高性能和良好的可伸缩性。优于InfluxDB和TimescaleDB 20倍。

  • 在处理数百万个的时间序列(又称高基数)时,使用的内存比InfluxDB少10倍。

  • 高度的数据压缩,因此与TimescaleDB相比,有限的存储空间中多可以塞满70倍的数据点。

  • 针对高延迟IO和低IOPS(AWS,Google Cloud,Microsoft Azure等中的HDD和网络存储)的存储进行了优化。

  • 运维优势:

  1. - VictoriaMetrics由一个没有外部依赖性的小型可执行文件组成。

  2. - 所有配置都是通过带有合理默认值的显式命令行标志完成的

  3. - 所有数据都存储在-storageDataPath标志指向的单个目录中。

  4. - 使用vmbackup / vmrestore从即时快照轻松快速地备份到S3GCS

  • 支持多种协议的数据抓取

  1. - prometheus exporter

  2. - prometheus 远端写api

  3. - 基于HTTPTCPUDPInfluxDB协议。

  4. - Graphite plaintext protocol

  5. - OpenTSDB put message

  6. - HTTP OpenTSDB /api/put requests

  7. - /api/v1/import.

  8. - 任意CSV数据。

  • 开源的集群版本

部署集群版本:整体结构图:


  

可以看到在整体的结构中。vmselect 和vminsert 均为无状态服务。storage 是存储服务。可以部署在虚拟机中 部署方式:
使用helm 一键部署 镜像准备:

  1. 下载vmcluser 三个组件的二进制包

  1. [root@k8s-master01 ~]# tar zxvf victoria-metrics-v1.34.7-cluster.tar.gz

  1. 构建images
    vmselect 和vminsert 相同。修改二进制文件即可

  1. FROM alpine:3

  2. RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \

  3. && apk update \

  4. && apk add --no-cache tzdata \

  5. && apk add --no-cache curl \

  6. && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \

  7. && echo "Asia/Shanghai" > /etc/timezone \

  8. && apk del tzdata \

  9. && rm -rf /var/cache/apk/* \

  10. && rm -rf /root/.cache \

  11. && rm -rf /tmp/*

  12. WORKDIR /

  13. COPY vmselect /bin/

  14. ENTRYPOINT ["/bin/vmselect"]

  1. 推送到harbor私服

  1. docker build . -t vmselect

  2. docker tag vmselect registry.rong360.com/base/vmselect:v1.34.7

  3. docker push registry.rong360.com/base/vmselect:v1.34.7

部署步骤:

  1. master节点安装git,helm

  2. 下载vm-cluster相关charts

  1. [root@k8s-master01 ~]# git clone https://github.com/VictoriaMetrics/helm-charts.git


3.修改相关配置 修改helm-charts/charts/victoria-metrics-cluster/values.yaml 中 vmstorage.enable 为false 修改vmselect,vminsert 中image.repository 和image.tag 为harbor 私服的地址和tag

  1. 安装vm-cluster到集群中,修改select 和 insert 的svc 类型为headless (非必须)

  1. [root@k8s-master01 victoria-metrics-cluster]# helm install prod -n monitoring .

  1. 修改prometheus 实例中远程写配置(prometheus-prometheus.yaml)

  1. remoteWrite:

  2. - url: http://vm-cluster-vminsert.monitoring.svc:8480/insert/0/prometheus/


  1. 在虚拟机中部署storage 节点,二进制文件, 使用supervisor管理即可



  2. 修改vmselect和vminsert节点的storeage配置, 指向虚拟机的storage节点



  3. 修改grafana 中读取配置
    因为线上grafana 位于集群外部。需要使用nginx 接入代理vmselect 和insert。参考例子


  1. server {

  2. listen 80;

  3. server_name vm.rong360.com;

  4. location ^~/select/ {

  5. proxy_pass http://vm-select;

  6. }

  7. location ^~/insert/ {

  8. proxy_pass http://vm-insert;

  9. }

  10. location ^~/snapshot/ {

  11. proxy_pass http://vm-storage;

  12. }

  13. }

grafana 的配置实例“http://vm.rong360.com/insert/0/prometheus/”

来源 https://mp.weixin.qq.com/s?__biz=MzI5NTU5MDgzOQ==&mid=2247483669&idx=1&sn=67fa08b4663f6f07a553f8d471d3df2b&chksm=ec500fcddb2786db351154ed64f488adef3f32e25bd58f6822dcf35af75ff265987f341c18e8&mpshare=1&scene=1&srcid=0324j4NpZPW9HwIvUequeWJd&sharer_sharetime=1648104335060&sharer_shareid=b37f669367a61860107a8412c2f3cc74#rd

相关文章