宣布 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 的性能显著提升,几乎在所有维度上都有改进。查询延迟更加一致,尤其是在处理高系列流失率时扩展性更好。根据不同实际生产场景的测量,资源消耗也显著下降

  • CPU 使用率相对于 Prometheus 1.8 降低到 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 服务器读取数据

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