当前位置: 首页 > article >正文

从Prometheus更换为VictoriaMetrics

我已经将线上的监控全都更替为VictoriaMetrics,从使用感受来讲,很多方面优于Prometheus

一、迁移概述

1、性能损耗,内存、CPU、存储、网络都要更低。还有几天的数据是我没有恢复到VM的,恢复完大概是7个G左右

root@prometheus-prd:/data# du -sh prometheus-data
21G     prometheus-data
root@prometheus-prd:/data# du -sh victoria-metrics/
4.8G    victoria-metrics/

查询速度更快,内存消耗更低,之前使用4个G内存,现在2个G
2、组件分工明确
将Prometheus整体的功能拆分为了几个组件、victoria-metrics(存储)、vmagent(监控收集、写)、vmalert(读取分析告警规则 - >通知alertmanager)、vmctl(数据迁移)

以上组件是迁移过程中用到的

3、web界面功能
组件有独立的web,web中可以进行一些debug,提供了服务的api接口,vmalert还可以检测告警规则是否生效,进行规则梳理的时候很好用

4、数据迁移方便
prometheus生成快照以后,vmctl可以按照时间序列过滤blocks,可以设置参数并发导入,速度很快。
也可以在线remote_read prometheus,remote_write到victoria-metrics,如果内存比较小不建议这么做,容易卡死

5、兼容各种exporter和prometheus.yml

整体流程如下
在这里插入图片描述

二、跨区域监控数据传输

2.1、情景分析

如果业务涉及多Region,总会有一个是主Region,那么主Region负责最终的数据存储,副Region是要向主Region写入即可。这里分两种场景
1、副Region监控数据保留,同时向主Region远程写入
2、副Region单独可查询数据,但不存储
vmagent可以完美的写入多个remote_url,同时写入本地存储和远程存储

2.2、Region的监控更替

下载包,victoria-metrics是db,vmutils是其他组件

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

直接下掉prometheus,使用vmagent去读取当前prometheus配置文件,再指定remote_write_url即可

cat >/etc/systemd/system/vmagent.service<<EOF
[Unit]
Description=VMagent
Wants=network-online.target
After=network-online.target

[Service]
User=root
ExecStart=/data/victoria-metrics/vmagent-prod -promscrape.config=/data/victoria-metrics/prometheus.yml -promscrape.config.strictParse=false -remoteWrite.url=http://xx:9090/api/v1/write
Restart=always

[Install]
WantedBy=multi-user.target
EOF

-promscrape.config.strictParse=false是禁用不支持的配置
更多信息查看https://docs.victoriametrics.com/vmagent/
在这里插入图片描述

2.3 检查数据写入

从grafana或者远程写的prometheus中查看指标是否存在时序数据,或者查看本地vmagent日志,确认没有remote_write相关的错误日志

三、主Region的监控更替

  • 更替数据库
  • 更替数据抓取
  • 兼容告警
  • 监控数据迁移

以上是业务监控迁移需要考虑到的点,我们在前面实现了其他区域对主区域的监控数据汇入,避免过多改造,最终生产暴露的监控数据源端口保持不变

3.1、部署DB

这里是最终的启动端口,共存时改为其他端口,不要和当前prometheus端口冲突

cat >/etc/systemd/system/victoria-metrics.service<<EOF
[Unit]
Description=VictoriaMetrics Server
Wants=network-online.target
After=network-online.target

[Service]
User=root
ExecStart=/data/victoria-metrics/victoria-metrics-prod -storageDataPath=/data/victoria-metrics/vmagent-remotewrite-data -httpListenAddr=:9090
Restart=always

[Install]
WantedBy=multi-user.target
EOF

3.2、部署vmagent指标抓取

兼容数据抓取
-remoteWrite.url=可以指定多个url

cat >/etc/systemd/system/vmagent.service <<EOF
[Unit]
Description=VMagent
Wants=network-online.target
After=network-online.target

[Service]
User=root
ExecStart=/data/victoria-metrics/vmagent-prod -promscrape.config=/data/prometheus/prometheus.yml -promscrape.config.strictParse=false -remoteWrite.url=http://localhost:9090/api/v1/write
Restart=always

[Install]
WantedBy=multi-user.target
EOF

3.3、部署告警

这里直接兼容告警规则
-rule=/data/prometheus/rules/*.yml读取目录下所有告警规则
datasource.url=http://localhost:9090数据源地址,要去查询规则里面的表达式
-notifier.url=http://localhost:9093通知的地址,写alertmanager的
remoteWrite.url 保存规则和状态信息,也写db的

cat >/etc/systemd/system/vmalert.service <<EOF
[Unit]
Description=VMalert
Wants=network-online.target
After=network-online.target

[Service]
User=root
ExecStart=/data/victoria-metrics/vmalert-prod -rule=/data/prometheus/rules/*.yml -datasource.url=http://localhost:9090 -notifier.url=http://localhost:9093 -remoteWrite.url=http://localhost:8429
Restart=always

[Install]
WantedBy=multi-user.target
EOF

最终实现不修改grafana数据源完成整个监控系统的更换

四、组件web的使用

4.1、DB Web

http://{IP}:9090 DB的地址
job资源的使用情况
在这里插入图片描述

debug工具
在这里插入图片描述
查询统计
在这里插入图片描述

4.2、VMagent Web

targets里面和prometheus的target界面一样
service-discovery里面有原始的label和最终label,同时可以进行label的debug,这是prometheus不支持的
config就是读取的配置文件,reload以后可以看配置文件是否有变化
在这里插入图片描述

4.3、VMalert Web

就是一些api查询参数
在这里插入图片描述

通知的地址,这里是alertmanager
在这里插入图片描述
这里能看到告警规则的状态,每个yml算一组,黄色表示规则没有匹配到指标
在这里插入图片描述
这里是触发的告警,同时可以去查看alertmanager的页面
在这里插入图片描述

五、数据同步

5.1、修改prometheus启动参数’

生成快照文件

nohup ./prometheus   --storage.tsdb.path=/data/prometheus-data --web.listen-address="0.0.0.0:9091" --web.enable-admin-api&
curl -XPOST http://localhost:9091/api/v1/admin/tsdb/snapshot 

上面会生成快照文件

5.2、vmctl数据恢复

有remote_read 的方式,需要有足够的内存和cpu,使用快照方式多线程处理cpu差不多就足够了
指定快照文件的目录,指定开始时间后会过滤掉一些blocks,减少同步时间。数据量大用screen后台运行就行

./vmctl-prod remote-read --remote-read-src-addr=http://localhost:9091 --remote-read-filter-time-start=2024-12-02T00:00:00Z  --remote-read-step-interval=hour  --vm-addr=http://localhost:9090

更多配置参考https://docs.victoriametrics.com/vmctl/

这样一套流程几乎完美的迁移了监控系统


http://www.kler.cn/a/419606.html

相关文章:

  • python学opencv|读取视频(一)灰度视频制作和保存
  • 【MyBatis】验证多级缓存及 Cache Aside 模式的应用
  • SpringBoot集成Milvus|(实现向量的存储和查询)
  • 【第 1 章 初识 C 语言】1.7 编程语言的分类:编译型语言与解释型语言
  • Seq2Seq模型与Transformer模型差异
  • 《Python基础》之Numpy库
  • 深入探讨NIO
  • 架构的学习
  • Verilog的线与类型与实例化模块
  • 成都睿明智科技有限公司抖音电商服务的新引擎
  • ubuntu的用户使用
  • 十进制左移右移以及IO输出处理记录
  • 基于Java Springboot房屋出售租赁系统
  • torch_geometric使用手册-Creating Graph Datasets(专题四)
  • 《C++ Primer Plus》学习笔记|第1章 预备知识 (24-12-2更新)
  • Python的学习路线
  • opensatck-海光C86芯片的计算节点直通英伟达T4 GPU加速卡的操作记录
  • Vue单页面应用和多页面应用
  • Python3 多线程使用concurrent.futures
  • tomcat 8在idea启动控制台乱码
  • 四元数Quaternion的概念以及应用领域和处理方法
  • 无法通过windows功能控制面板自动安装或卸载windows server角色和功能
  • 【人工智能】用Python实现卷积神经网络(CNN)进行图像分类:从零开始的深度学习教程
  • Linux 各个目录作用
  • 如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件
  • 会展观众数据收集与分析