为什么 Prometheus 不适合长期存储?

Why Prometheus is not suitable for long-term storage?

我正在考虑使用 Prometheus 作为时间序列数据库来长期存储数据(数月甚至一年以上)。

但是,我在几个地方读到 Prometheus 不适合长期存储,在这种情况下,其他 TSDB 将是更好的解决方案。但为什么它不适合长期存储?

官方docs提及:

Prometheus's local storage is not intended to be durable long-term storage; external solutions offer extended retention and data durability.

但是“延长保留和数据持久性”的确切含义是什么?为什么 Prometheus 无法实现?

这是一个设计决定,主要与 project/tool 的范围有关。原作者根据他们在 SoundCloud 的用例,决定不构建分布式数据存储层,而是保持简单。

换句话说:Prometheus 会填满磁盘但不会为您分片或复制数据。现在,如果您要监控许多不同的环境,创建数十万个时间序列和大量指标,这将无法扩展(本地磁盘太小,基于 NFS 的解决方案现在可能是您想要的)。因此,那里有 different solutions,允许您联合 and/or 来自不同环境的重复数据删除指标。

这里要记住的重要一点是,这不是 Prometheus 的缺点,而是一个有意识的决定,专注于一件事并做得很好,并随着时间的推移开发 API(remote_writeremote_read) 使其他人能够构建解决 distributed/at 规模用例的系统。