宣布 Prometheus 2.0

2017年11月8日作者 Fabian Reinartz 代表 Prometheus 团队

将近一年半前,我们发布了 Prometheus 1.0。此次发布标志着项目的一个重要里程碑。我们已经实现了一系列广泛的功能,构成了 Prometheus 简洁却极其强大的监控理念。

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

但是,还有哪些变化值得发布新的主版本呢?

Prometheus 2.0

Prometheus 拥有一个简单而健壮的运行模型,用户很快就爱上了它。然而,基础设施领域并未停滞不前,像 Kubernetes 和 Mesos 这样的项目正在迅速改变软件的部署和管理方式。被监控的环境变得越来越动态化。

我们越来越感受到这给 Prometheus 的性能带来了压力。存储子系统需要根据预期负载进行仔细配置。Prometheus 1.6 凭借其自动调优功能极大地缓解了这一问题。然而,我们的用户仍然不可避免地会遇到一些硬性限制。

存储

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

  • 与 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 服务器读取数据

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