Prometheus存储总结以及配置远端存储VictoriaMetrics单机版
一、Prometheus存储架构
Prometheus 有着非常高效的时间序列数据存储方法, 每个采样数据仅仅占用3.5byte 左右空间, 上百万条时间序列, 30 秒间隔, 保留 60 天, 大概 200 多 G空间
默认情况下, prometheus 将采集到的数据存储在本地的 TSDB 数据库中, 路径默认为 prometheus 安装目录的 data 目录, 数据写入过程为先把数据写入 wal 日志并放在内存, 然后 2 小时后将内存数据保存至一个新的 block 块, 同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块, 以此类推。
每个 block 为一个 data 目录中以 01 开头的存储目录, 如下:
每个块有 4 部分组成
│ └── 000001 #数据目录,每个大小为 512MB 超过会被切分为多个
├── index #索引文件, 记录存储的数据的索引信息, 通过文件内的几个表来查找时序数据
├── meta.json #block 元数据信息, 包含了样本数、 采集数据数据的起始时间、 压缩历史
└── tombstones #逻辑数据, 主要记载删除记录和标记要删除的内容, 删除标记, 可在查询块时排除样本。
本地存储配置参数:
--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实现
2.1、单机版部署
下载单机的部署包:https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.81.2/victoria-metrics-linux-amd64-v1.81.2.tar.gz
tar -xf victoria-metrics-linux-amd64-v1.81.2.tar.gz -C /usr/local/bin
配置服务启动文件
vim /etc/systemd/system/victoria-metrics-prod.service
[Unit] Description=For Victoria-metrics-prod Service After=network.target [Service] ExecStart=/usr/local/bin/victoria-metrics-prod -httpListenAddr=0.0.0.0:8428 -storageDataPath=/data/victoria -retentionPeriod=3 [Install] WantedBy=multi-user.target
参数: -httpListenAddr=0.0.0.0:8428 #监听地址及端口 -storageDataPath #VictoriaMetrics 将所有数据存储在此目录中, 默认为执行启动 victoria 的当前目录下的 victoria-metrics-data 目录中。 -retentionPeriod #存储数据的保留, 较旧的数据会自动删除, 默认保留期为 1 个月, 默认单位为 m(月),支持的单位有 h (hour), d (day), w (week), y (year)。
systemctl enable --now victoria-metrics-prod.service
验证web页面
2.2、配置Prometheus写入victoriametrics
验证数据
http://172.16.88.20:8428/vmui/
2.3、配置grafana
添加数据源,类型为 prometheus, 地址及端口为 VictoriaMetrics:
导入指定模板:8919