Prometheus学习笔记之设置存储时间为30天不生效
0x00 概述
Prometheus升级到2.23进行测试发现,设置存储时间为30天未生效,根据官方说明手册,实际运行后发现数据只能存储几个小时。。。。
--storage.tsdb.retention.time=30d
--storage.tsdb.retention.size=512MB
经过排查发现是上面两个参数相互覆盖导致,测试运行发现这个两个参数,任意1个达到了阈值,就会删除过期的数据。
这里犯了一个马虎的错误,没细看描述,把--storage.tsdb.retention.size理解成了1.x版本的chunk size参数了。
0x01 描述
Prometheus提供了本地存储,即tsdb时序数据库,本地存储给Prometheus带来了简单高效的使用体验,prometheus2.0以后压缩数据能力也得到了很大的提升。可以在单节点的情况下满足大部分用户的监控需求。
但本地存储也限制了Prometheus的可扩展性,带来了数据持久化等一系列的问题。为了解决单节点存储的限制,prometheus没有自己实现集群存储,而是提供了远程读写的接口,让用户自己选择合适的时序数据库来实现prometheus的扩展性。
Prometheus 1.x版本的TSDB(V2存储引擎)基于LevelDB,并且使用了和Facebook Gorilla一样的压缩算法,能够将16个字节的数据点压缩到平均1.37个字节。
Prometheus 2.x版本引入了全新的V3存储引擎,提供了更高的写入和查询性能,经过使用发现查询更快,用户体验大升级。
容器版本的promtheus这次也同步升级到了2.23,解决以前单个service pod出现内存OOM的问题,现在内存使用比较稳定,不会出现以前内存占用步步高升的情况了。
另外7.x版本的Grafana UI效果和配色总体感觉比6.x看起来偏冷,扁平化明显。
# 启动参数
./prometheus
--config.file=./prometheus.yml
--web.listen-address=0.0.0.0:19091
--web.enable-lifecycle
--storage.tsdb.path=/data/PromDB
--storage.tsdb.retention.time=30d
--query.timeout=2m
--log.level=info
--log.format=ogfmt
--storage.tsdb.retention.size=2TB
--storage.tsdb.no-lockfile
--storage.tsdb.wal-compression --rules.alert.resend-delay=5s
0x02 推荐
2.x版本翻译推荐 https://github.com/feixuek/prometheus/tree/master/prometheus