prometheus 存储系统
Prometheus 有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5 byte 左右空间,上百万条时间序列,30秒间隔,保留60天,大概200多G空间。
默认情况下,prometheus 将采集到的数据存储在本地的 TSDB 数据库中,路径默认为 prometheus 安装目录的 data 目录,数据写入过程为先把数据写入 wal 日志并放在内存,然后 2 小时后将内存数据保存至一个新的 block 块,同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块,以此类推。
block 简介:
每个 block 为一个 data 目录中以 01 开头的存储目录,如下:
block 的特性:
block 会压缩、合并历史数据块,以及删除过期的块,随着压缩、合并,block 的数量会减少,在压缩过程中会发生三件事:定期执行压缩、合并小的 block 到大的 block、清理过期的块。
每个块有 4 部分组成:
root@prometheus:/usr/local/prometheus/data# tree 01GDF6NKPFYK8RG37J7Y0K1JNM/
01GDF6NKPFYK8RG37J7Y0K1JNM/
├── chunks
│ └── 000001 #数据目录,每个大小为 512MB 超过会被切分为多个
├── index #索引文件,记录存储的数据的索引信息,通过文件内的几个表来查找时序数据
├── meta.json #block 元数据信息,包含了样本数、采集数据数据的起始时间、压缩历史
└── tombstones #逻辑数据,主要记载删除记录和标记要删除的内容,删除标记,可在查询块时排除样本。
本地存储配置参数
./prometheus --help
--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=15d #数据保存时长,默认 15 天
--query.timeout=2m #最大查询超时时间
--query.max-concurrency=20 #最大查询并发数
--web.read-timeout=5m #最大空闲超时时间
--web.max-connections=512 #最大并发连接数
--web.enable-lifecycle #启用 API 动态加载配置功能
victoriametrics
使用victoriametrics作为prometheus的数据存储服务,将prometheus采集的数据统一存储在victoriametrics上。
grafana就只需在victoriametrics上读取数据,不需要从prometheus上获取,这样可以减轻prometheus的读压力。并且grafana需要配置将数据源从prometheus修改为victoriametrics。
服务流程图
victoriametrics的项目和官网
github项目地址:https://github.com/VictoriaMetrics/VictoriaMetrics
官网文档:https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html
单机版部署
安装victoriametrics
访问github项目地址,下载 https://github.com/VictoriaMetrics/VictoriaMetrics
解压部署
root@victoriametrics:~# tar xf victoria-metrics-linux-amd64-v1.81.2.tar.gz -C /usr/local/bin/
参数:
-httpListenAddr=0.0.0.0:8428 #监听地址及端口
-storageDataPath #VictoriaMetrics 将所有数据存储在此目录中,默认为执行启动 victoria 的当前目录下的 victoria-metrics-data 目录中。
-retentionPeriod #存储数据的保留,较旧的数据会自动删除,默认保留期为 1 个月,默认单位为 m(月),支持的单位有 h (hour), d (day), w (week), y (year)。
创建service启动文件
root@victoriametrics:~# 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
启动victoriametrics
systemctl daemon-reload && systemctl enable victoria-metrics-prod.service && systemctl start victoria-metrics-prod.service
验证
浏览器访问IP:8428
未完待续......
标签:存储,--,victoriametrics,victoria,prometheus,block From: https://www.cnblogs.com/punchlinux/p/17047975.html