Prometheus 2.0 发布

Prometheus 2.0 发布

大约一年半以前,我们发布了 Prometheus 1.0。这个版本的发布标志着该项目的一个重要里程碑。我们已经实现了一系列广泛的功能,这些功能构成了 Prometheus 简单而极其强大的监控理念。

从那时起,我们添加并改进了各种服务发现集成,扩展了 PromQL,并尝试了远程 API 的第一个迭代,以启用可插拔的长期存储解决方案。

但是,还有什么其他变化值得发布一个新的主要版本呢?

Prometheus 2.0

Prometheus 具有简单而强大的操作模型,我们的用户很快就喜欢上了它。然而,基础设施领域并没有停滞不前,像 Kubernetes 和 Mesos 这样的项目正在迅速改变软件的部署和管理方式。受监控的环境变得越来越动态。

我们越来越感受到这对 Prometheus 性能造成的压力。存储子系统需要仔细配置才能满足预期的负载。Prometheus 1.6 通过其自动调整功能大大缓解了这种痛苦。尽管如此,我们的用户还是会遇到一些不可避免的硬性限制。

存储

在 2017 年初,底层开始发生变化。最初是一个新的、性能更高的时间序列数据库的实验,很快就在实际的基准测试中得到了证实。在过去的六个月里,我们一直忙于将这项工作稳定为一个独立的时间序列数据库,并将其重新集成到 Prometheus 本身中。结果是一个性能显著提升的 Prometheus 2.0,几乎在所有方面都有所改进。查询延迟更加一致,尤其是在面对高序列 churn 时,其扩展性更好。在不同的实际生产场景中测量的资源消耗也显著减少。

  • 与 Prometheus 1.8 相比,CPU 使用率降低了 20% - 40%
  • 与 Prometheus 1.8 相比,磁盘空间使用率降低了 33% - 50%
  • 在没有太多查询负载的情况下,磁盘 I/O 通常平均为 <1%

Prometheus 1.8 vs 2.0 resource comparison

它也完全有能力处理未来几年现代计算环境日益动态的特性。

陈旧数据处理

此外,还发生了许多小的和大的变化,以使 Prometheus 体验更加一致和直观。最值得注意的是陈旧数据处理,这是最古老和最受请求的路线图项目之一。通过新的改进,现在可以显式跟踪消失的监控目标或来自这些目标的序列,从而减少查询伪影并提高告警响应能力。

其他改进

Prometheus 2.0 还内置了对整个数据库的快照备份的支持。

我们还将我们的记录和告警规则从自定义格式迁移到了无处不在的 YAML 格式。这使得与配置管理和模板的集成更容易。

发生了许多其他较小的更改和清理工作。查看Prometheus 1.x 到 2.0 迁移指南,了解更改的完整概述以及如何使您的设置适应这些更改。但请不要担心,Prometheus 2 仍然是您已经爱上的 Prometheus - 只是更快,并且操作和使用起来更加容易。

下一步是什么

新的存储子系统设计为可访问和可扩展的。这适用于直接集成到 Prometheus 中的新功能,以及可以在其之上构建的自定义工具。简单而开放的存储格式和库还允许用户轻松构建自定义扩展,例如动态保留策略。这使得存储层可以满足各种要求,而不会将复杂性引入 Prometheus 本身;使其能够专注于其核心目标。

远程 API 将继续发展,以满足长期存储的需求,同时不会牺牲 Prometheus 通过简单性实现的可靠性模型。

试用一下!

您可以像往常一样通过下载我们的官方二进制文件容器镜像来试用 Prometheus 2.0。请参阅入门页面,了解如何启动和运行 Prometheus 的教程。

如果您是从 Prometheus 1.x 升级,请查看我们的迁移指南,了解您必须进行的调整以及如何在迁移期间使用远程 API 来从旧的 Prometheus 服务器读取数据

最后,我们要感谢所有广泛测试预发布版本并帮助我们调试问题的用户。没有你们,这个巨大的里程碑是不可能实现的!