首页 > 其他分享 >prometheus学习笔记之prometheus存储系统

prometheus学习笔记之prometheus存储系统

时间:2024-09-25 15:13:07浏览次数:1  
标签:vmstorage -- 存储系统 笔记 victoria prometheus systemctl root

一、prometheus本地存储系统

1.本地存储架构

默认情况下, prometheus 将采集到的数据存储在本地的 TSDB 数据库中, 路径默认为 prometheus 安装目录的 data 目录, 数据写入过程为先把数据写入 wal 日志并放在内存, 然后 2 小时后将内存数据保存至一个
新的 block 块, 同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块, 以此类推。

2. block简介

每个 block 为一个 data 目录中以 01 开头的存储目录, 如下:
[root@k8s-master prometheus]# ll /data/prometheus/
total 9
drwxr-xr-x 3 root root    68 Sep 24 07:00 01J8GHT1AQ6CA1V206XYHYECWT
drwxr-xr-x 3 root root    68 Sep 24 11:00 01J8GZHF3N69JKR6AAG8H84RT7
drwxr-xr-x 3 root root    68 Sep 24 13:00 01J8H6D6BJHK2V77BH7A70R3WS
drwxr-xr-x 3 root root    68 Sep 24 13:00 01J8H6D6F09Y4XZ4A4JQ652STX
drwxr-xr-x 3 root root    68 Sep 24 15:00 01J8HD8XKHBFVB768R40NAY9F0
drwxr-xr-x 2 root root    48 Sep 24 16:00 chunks_head
-rw-r--r-- 1 root root     0 Sep 24 15:41 lock
-rw-r--r-- 1 root root 20001 Sep 24 16:31 queries.active
drwxr-xr-x 3 root root  4096 Sep 24 15:41 wal

3.block 的特性

block 会压缩、 合并历史数据块, 以及删除过期的块, 随着压缩、 合并, block 的数量会减少, 在压缩过程中会发生三件事: 定期执行压缩、 合并小的 block 到大的 block、 清理过期的块。

每个块有 4 部分组成,如下:

tree 01J8GHT1AQ6CA1V206XYHYECWT
01J8GHT1AQ6CA1V206XYHYECWT
├── chunks
│   └── 000001 #数据目录,每个大小为 512MB 超过会被切分为多个
├── index      #索引文件, 记录存储的数据的索引信息, 通过文件内的几个表来查找时序数据
├── meta.json  #block 元数据信息, 包含了样本数、 采集数据数据的起始时间、 压缩历史
└── tombstones #逻辑数据, 主要记载删除记录和标记要删除的内容, 删除标记, 可在查询块时排除样本

4.本地存储配置参数

--config.file="prometheus.yml" #指定配置文件
--web.listen-address="0.0.0.0:9090" #指定监听地址
--storage.tsdb.path="data/" #指定数存储目录
--storage.tsdb.retention.size=B, KB, MB, GB, TB, PB, EB #指定 chunk 大小, 默认 512MB
--storage.tsdb.retention.time= #数据保存时长, 默认 15 天
--query.timeout=2m #最大查询超时时间
-query.max-concurrency=20 #最大查询并发数
--web.read-timeout=5m #最大空闲超时时间
--web.max-connections=512 #最大并发连接数
--web.enable-lifecycle #启用 API 动态加载配置功能

二、远端存储之victoriametrics(单机)

项目地址:https://github.com/VictoriaMetrics/VictoriaMetrics

官方文档:https://docs.victoriametrics.com/single-server-victoriametrics/

1.单机部署victoriametrics

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.88.0/victoria-metrics-linux-amd64-v1.88.0.tar.gz
tar xf victoria-metrics-linux-amd64-v1.88.0.tar.gz
mv victoria-metrics-prod /usr/bin/
victoria-metrics-prod -h

vim /etc/systemd/system/victoria-metrics.service
[Unit]
Description=For Victoria-metrics Service
After=network.target
[Service]
ExecStart=/usr/bin/victoria-metrics-prod -httpListenAddr=0.0.0.0:8428 -storageDataPath=/data/victoria -retentionPeriod=3 #保留3个月 如果不写单位则为m(月)
[Install]
WantedBy=multi-user.targ

#启动参数简介
-httpListenAddr=0.0.0.0:8428 #监听地址及端口
-storageDataPath #VictoriaMetrics 将所有数据存储在此目录中, 默认为执行启动 victoria 的当前目录下的 victoria-metrics-data 目录中。
-retentionPeriod #存储数据的保留, 较旧的数据会自动删除, 默认保留期为 1 个月, 默认单位为 m(月),支持的单位有 h (hour), d (day), w (week), y (year)


systemctl daemon-reload && systemctl restart victoria-metrics.service
systemctl status victoria-metrics.service

web端验证

2.配置prometheus写入 victoriametrics

参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write

vim prometheus.yml
#只添加该2行即可,其他参考文档按实际需要添加
remote_write:
  - url: http://192.168.100.135:8428/api/v1/write 

systemctl restart prometheus

3.web端验证

访问victoriametrics UI界面

可以看到 victoriametrics已经可以看到,并可以查询(语法与PQL一致)

4.配置grafana读取victoriametrics

添加数据源,类型依然为prometheus

配置连接信息

保存并测试连接

创建dashboard,导入ID为1860的模板

如图,dashboard可以正常展示 

三、远端存储之victoriametrics(集群)

1.集群组件简介

必须组件:
1.vminsert #写入组件(写), vminsert 负责接收数据写入并根据对度量名称及其所有标签的一致 hash 结果将数据分散写入不同的后端 vmstorage 节点之间 vmstorage, vminsert 默认端口 8480
2.vmstorage #(存)存储原始数据并返回给定时间范围内给定标签过滤器的查询数据, 默认端口 8482
3.vmselect #查询组件(读), 连接 vmstorage , 默认端口 8481

其它可选组件:
1.vmagent #是一个很小但功能强大的代理, 它可以从 node_exporter 各种来源收集度量数据, 并将它们存储在 VictoriaMetrics 或任何其他支持远程写入协议的与 prometheus 兼容的存储系统中, 有替代prometheus server 的意向
2.vmalert: 替换 prometheus server, 以 VictoriaMetrics 为数据源, 基于兼容 prometheus 的告警规则, 判断数据是否异常, 并将产生的通知发送给 alertermanager
3.Vmgateway: 读写 VictoriaMetrics 数据的代理网关, 可实现限速和访问控制等功能, 目前为企业版组件
4.vmctl: VictoriaMetrics 的命令行工具, 目前主要用于将 prometheus、 opentsdb 等数据源的数据迁移到VictoriaMetrics。

2.部署vmstorage 

#清理上一步的操作,避免对后面的实验产生影响
#集群需要先安装vmstorage ,应为vmstorage 被其他两个组件依赖
#在集群中每台服务器上都执行以下操作  当前集群机器为 100.131 100.132 100.133

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.88.0/victoria-metrics-linux-amd64-v1.88.0-cluster.tar.gz  #注意下载的为cluster版本
tar xf victoria-metrics-linux-amd64-v1.88.0-cluster.tar.gz
mv vm* /usr/bin/


vim /etc/systemd/system/vmstorage.service
[Unit]
Description=Vmstorage Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath /data/vmstorage-data -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401
[Install]
WantedBy=multi-user.target

#启动参数介绍
-httpListenAddr vmstorage web页面监听端口-vminsertAddr vminsert服务写入时连接的端口-vmselectAddr vmselect服务查询时连接的端口

systemctl restart vmstorage.service && systemctl enable vmstorage.service && systemctl status vmstorage.service
netstat -tnlp

3.部署vminsert组件

vim /etc/systemd/system/vminsert.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vminsert-prod -httpListenAddr :8480 -storageNode=192.168.100.131:8400,192.168.100.132:8400,192.168.100.133:8400 #注意该值为vmstorage节点的vmimsertAddr参数指定的端口
[Install]
WantedBy=multi-user.target


systemctl daemon-reload && systemctl restart vminsert && systemctl enable vminsert && systemctl status vminsert
netstat -tnlp

4.部署 vmselect组件

vim /etc/systemd/system/vmselect.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vmselect-prod -httpListenAddr :8481 -storageNode=192.168.100.131:8401,192.168.100.132:8401,192.168.100.133:8401 #注意该值为vmstorage节点的vmselectAddr参数指定的端口
[Install]
WantedBy=multi-user.target

systemctl daemon-reload && systemctl restart vmselect && systemctl enable vmselect && systemctl status vmselect
netstat -tnlp

5.配置prometheu远程写入

#仅在prometheus或联邦中prometheus 中心server上配置

vim prometheus.yml
remote_write:
  - url: http://192.168.100.131:8480/insert/0/prometheus   #vminsert服务监听端口 /insert 为固定路径  /0/prometheus为自定义路径,其中/0的值不能为字符串
  - url: http://192.168.100.132:8480/insert/0/prometheus
  - url: http://192.168.100.133:8480/insert/0/prometheus

curl -X POST http://127.0.0.1:9090/-/reload

5.配置grafana 数据源及dashboard

数据源类型prometheus

确保测试通过

导入1860模板查看数据

查看数据

 

 

标签:vmstorage,--,存储系统,笔记,victoria,prometheus,systemctl,root
From: https://www.cnblogs.com/panwenbin-logs/p/18429518

相关文章

  • docker笔记_数据卷、挂载
    docker数据存储概述数据卷(Volumes)特点操作绑定挂载(BindMounts)内存挂载(tmpfs)总结概述镜像构建过程中,所产生的layer都是只读层,只有在创建容器时才会生成一个可写的容器层(contatnerlayer)。如下图:在默认情况下,容器内部创建的所有文件都存储在可写层中。这导致:获取......
  • LoRA: Low-Rank Adaptation of Large Language Models 笔记
    问题背景⼤模型通常包含数亿甚⾄数百亿个参数,对其进⾏微调需要⼤量的计算资源和存储空间。在微调过程中,直接修改预训练模型的所有参数可能会破坏模型的原始性能。存储和部署微调后的⼤模型需要⼤量存储空间,尤其是当需要在多个应⽤场景中部署不同微调版本时。许多微调⽅法会增......
  • 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预
    运维监控系列文章入口:【运维监控】系列文章汇总索引文章目录一、prometheus部署二、grafana部署三、blackbox_exporter部署1、下载2、解压3、启动4、验证四、prometheus集成blackbox_exporter1、添加prometheus监控规则2、添加prometheus的预警规则3、添加prometheus......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播1111
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......
  • 思源笔记局域网内访问【使用教程】_思源笔记局域网访问-CSDN博客
    思源笔记局域网内访问【使用教程】_思源笔记局域网访问-CSDN博客思源笔记局域网内访问【使用教程】_思源笔记局域网访问-CSDN博客https://blog.csdn.net/qq_22841387/article/details/124738674文章浏览阅读4.3k次,点赞3次,收藏8次。在团队协作中,使用思源笔记进行需求文档的编......
  • 仅作笔记用:M.2转接卡转移原机械硬盘系统盘
    这是台惠普Prodesk400G4的品牌机,主板是H270,现需要添置一块M.2NVMe的固态硬盘,但这个主板没有M.2插槽,故使用PCI-E转接卡转接。这个品牌机主板的BIOS可以直接识别转接卡上的固态硬盘作为启动项,但是貌似只能以传统方式引导转接卡上的NVMe硬盘,UEFI方式会直接失败。......
  • 笔记暂存
    有n个物品,每个物品有重量wi和体积vi且密度均匀。你可以切物品,每次可以选一个物品切成两部分,也就是选一个0到1的实数k把物品分成k和(1-k)比例的两个物品。问题1.要想保证切完之后一定能把物品分成两组使得两组重量和相等,体积和也相等,X至少是几。对于\(f(0)<0\)和\(f(1)>\)求......
  • golang学习笔记11-模块化与包管理【重要】
    注:本人已有C,C++,Python基础,只写本人认为的重点。在第六节(golang学习笔记6)中,我讲了如何自定义包,包其实有两种引用方式,一种是不用模块,还有种是用模块。不用模块的是旧版本的做法,因为在18年8月发布的1.11版本中,增加了模块管理的内容,到现在六年多了,所以旧版本的方法早过时了。......
  • 笔记1 搜索引擎分类,搜索指令
    搜索引擎分类:目录式分类搜索引擎和全文式检索搜索引擎搜索引擎有Google、Baidu、Bing、搜狗、夸克等等......使用减号(-)指令,可以排除含有特定关键词的搜索结果,如搜索“原神-广告”,就能得到包含原神但不包含广告的结果filetype指令可以查询特定格式的文件:关键词+空格+filetype:+do......