文章目录
- 前言
- 本地存储机制
- 存储块block
-
- 本地存储
- 远端存储
- 单机部署Victoria metrics
- Prometheus配置
- Grafana模板
前言
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30 秒间隔,保留 60 天,大概 200 多G空间。所以Prometheus非常省空间,存储机制高效快捷,和其它组件构成Prometheus系统。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0f03d7db90d451d9f453a01ffc4ea4b.png)
Prometheus架构图
本地存储机制
默认情况下,prometheus 将采集到的数据存储在本地的 TSDB 数据库中,路径默认为 prometheus 安装目录的 data 目录,数据写入过程为先把数据写入 WAL 日志并放在内存,然后 2 小时后将内存数据保存至一个新的 block 块,同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块,以此类推。
- TSDB:时间序列数据库(Time Series Database),按照时间顺序记录信息的数据库。
- WAL:预写日志算法(Write-Ahead Logging),在修改数据库之前,先把操作日志保存。
存储块block
Prometheus每两小时将内存数据持久化保存到硬盘上,每个Block实际上是一个目录,里面包含着多个文件。
block文件
列出Prometheus存储路径,01开头的目录就是一个Block:
ll /apps/prometheus/data
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJQC8MK05KW9R4Z46T9B5
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJQJKZYVM3X6PG5FK3N51
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJRQ4X7MMC1W17MAP5SVB
列出一个Block目录,里面包含1个目录,3个文件:
ll 01GGSDJRQ4X7MMC1W17MAP5SVB
drwxr-xr-x. 2 root root 20 11月 1 19:00 chunks
-rw-r--r--. 1 root root 3.1M 11月 1 19:00 index
-rw-r--r--. 1 root root 736 11月 1 19:00 meta.json
-rw-r--r--. 1 root root 9 11月 1 19:00 tombstones
名称 | 内容 |
---|
chunks | 目录,内含数据块文件,每个数据块最大512M,超过大小将切分多块。 |
index | 索引文件,记录存储的数据的索引信息,通过文件内的几个表来查找时序数据 |
meta.json | 元数据信息,包含了样本数、采集数据数据的起始时间、压缩历史 |
tombstones | 逻辑数据,主要记载删除记录和标记要删除的内容,删除标记,可在查询块时排除样本。 |
block特性
block具有3大特性,使得block的数量不断减少,节省磁盘空间。
- 压缩:定期执行压缩
- 合并:合并小的历史数据块到大的block
- 清理:删除过期的块
本地存储
运行Prometheus程序时,可以带上很多参数,下面介绍一下跟存储相关的参数:
/apps/prometheus/prometheus --help
--help Show context-sensitive help (also try --help-long and --help-man).
--version Show application version.
... ...
... ...
参数 | 值 | 含义 |
---|
–config.file | prometheus.yml | 配置文件路径 |
–web.listen-address | 0.0.0.0:9090 | 监听地址与端口 |
–storage.tsdb.path | data/ | 存储路径 |
–storage.tsdb.retention.size | 512MB | 数据块最大值 |
–storage.tsdb.retention.time | 15 | 数据保留天数 |
–query.timeout | 2m | 查询超时时间 |
-query.max-concurrency | 20 | 最大查询并发数 |
–web.read-timeout | 5m | 空闲超时时间 |
–web.max-connections | 512 | 最大并发连接数 |
–web.enable-lifecycle | 空 | 添加参数即可支持热加载 |
远端存储
面对更多历史数据的持久化,Prometheus 单纯依靠本地存储远不足以应对,为此引入了远端存储。
Victoria metrics是一个快速的低消耗的,可扩展的监控解决方案和时间序列数据库。
Victoria metrics部署分单机版与集群版,本节我们介绍单机版。
单机部署Victoria metrics
下载二进制文件
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.82.0/victoria-metrics-linux-amd64-v1.82.0.tar.gz
tar zxvf victoria-metrics-linux-amd64-v1.82.0.tar.gz
mv victoria-metrics-prod /usr/local/bin
创建victoria-metrics服务文件
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-metrics-data \
-retentionPeriod=1y
[Install]
WantedBy=multi-user.target
参数 | 含义 |
---|
httpListenAddr | 监听端口 |
storageDataPath | 数据目录 |
retentionPeriod | 保留1年 |
启动victoria-metrics-prod服务,查看端口,默认为8428
systemctl daemon-reload
systemctl enable --now victoria-metrics-prod.service
systemctl status victoria-metrics-prod.service
netstat -lntp | grep victoria
tcp 0 0 0.0.0.0:8428 0.0.0.0:* LISTEN 940/victoria-metric
打开首页,发现有多个链接,点击vmui进入图形化界面:
![在这里插入图片描述](https://img-blog.csdnimg.cn/03f3a0d62d684177aeadd25e4c82094a.png)
Prometheus配置
转到Prometheus服务器,在配置文件关联到victoria-metrics服务,并重启Prometheus:
vim /apps/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
remote_write:
- url: http://192.168.100.197:8428/api/v1/write
victoria-metrics接收到Prometheus数据,可在vmui页面查看,选择其中一个指标查询:
![在这里插入图片描述](https://img-blog.csdnimg.cn/cbfa31d6981c42a68c568d540880e147.png)
Grafana模板
添加数据源,类型为Prometheus,URL为victoria-metrics地址端口:
![在这里插入图片描述](https://img-blog.csdnimg.cn/5ab39910745c47298d0dcd36840a7fc7.png)
导入模板,ID为8919:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8d157f7ef3914f7fad07024f46a80fab.png)
选择数据源为刚刚创建的Victoria-Metrics:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e1bca8b0ffe84ebc8e95b5a23bbc1adf.png)
导入完成,即可进入展示页面:
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a01b44abc164671949895dd3d859253.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)