我将Prometheus掌舵图安装到kubernetes集群以进行监视。 默认情况下,
在部署图表几天后,prometheus服务器容器被设置为crashloopbackoff状态。 从Pod日志中找到的原因是:
level=error ts=2019-10-09T11:03:10.802847347Z caller=main.go:625 err="opening storage failed: zero-pad torn page: write /data/wal/00000429: no space left on device"
这意味着磁盘(持久卷)中没有可用空间来保存数据。 因此,我清除了该卷的现有数据并临时解决了该问题。
对此合适的解决方案是什么?
要计划Prometheus服务器的容量,可以使用粗略公式:
needed_disk_space = retention_time_seconds * ingested_samples_per_second * bytes_per_sample
有人可以解释一下如何使用此公式吗?
为什么保留15天的8Gi容量还不够?
编辑:
6天后默认使用8Gi空间为100%。
答案 0 :(得分:1)
15天约为130万秒。让我们高估每个样本8个字节。因此,每个指标大约需要10mb。因此8GB可让您存储800个指标。您可能不止这些。将您要存储的系列数乘以10,即需要的兆字节数。大致来说,这至少会使您获得正确的数量级。
答案 1 :(得分:1)
从Prometheus 2.7开始,您引入了一个新标记来管理保留。来自文档:
--storage.tsdb.retention.size
:[EXPERIMENTAL]这确定存储块可以使用的最大字节数(请注意,这不包括WAL大小,这可能是很大的)。最旧的数据将首先被删除。默认为0或禁用。该标志是实验性的,可以在将来的版本中进行更改。支持的单位:KB,MB,GB,PB。例如:“ 512MB”
您可以在“部署”配置中设置此参数选项,以根据大小而不是时间限制保留时间。
根据this的消息,由于尚处于试验阶段,因此可以为WAL和一个最大大小的块留出空间(保留时间和一个月的10%中的较小者)是安全的。