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 的性能显著提升,几乎在所有方面都有改进。查询延迟更加一致,并且在面对高序列变化率时尤其能够更好地扩展。在不同的实际生产场景中衡量的资源消耗也有显著降低。
- CPU 使用率与 Prometheus 1.8 相比降低了20% - 40%
- 磁盘空间使用率与 Prometheus 1.8 相比降低了33% - 50%
- 在没有太多查询负载的情况下,磁盘 I/O 通常平均<1%

它还能很好地应对现代计算环境中日益动态的特性,并将在未来多年保持这一优势。
失效处理
此外,还进行了许多大大小小的更改,以使 Prometheus 的体验更加一致和直观。最值得注意的是失效处理 ,这是最古老且最受请求的路线图项目之一。通过新的改进,现在可以显式跟踪消失的监控目标或来自这些目标的序列,从而减少查询伪影并提高告警响应能力。
其他改进
Prometheus 2.0 还内置了对整个数据库的快照备份 的支持。
我们还把记录规则和告警规则从自定义格式迁移到了通用的 YAML 格式。这使得与配置管理和模板集成更加容易。
进行了许多其他小的更改和清理。请查看Prometheus 1.x 到 2.0迁移指南,以全面了解更改以及如何调整您的设置。但请放心,Prometheus 2 仍然是您所喜爱的 Prometheus——只是速度更快,操作和使用也更加简单。
下一步
新的存储子系统旨在易于访问和扩展。这既包括直接集成到 Prometheus 中的新功能,也包括可以构建在其之上的自定义工具。简单开放的存储格式和库也允许用户轻松构建自定义扩展,例如动态保留策略。这使得存储层能够满足各种需求,而无需将复杂性引入 Prometheus 本身;让 Prometheus 能够专注于其核心目标。
远程 API 将继续发展,以满足长期存储的需求,而不会牺牲 Prometheus 通过简洁性实现可靠性的模型。
立即尝试!
您可以像往常一样通过下载我们的官方二进制文件和容器镜像 来尝试 Prometheus 2.0。请参阅入门页面上的教程,了解如何开始使用 Prometheus。
如果您是从 Prometheus 1.x 升级,请查阅我们的迁移指南,了解您需要进行的调整,以及如何在迁移期间使用远程 API从旧的 Prometheus 服务器读取数据 。
最后,我们要感谢所有广泛测试了预发布版本并帮助我们调试问题的用户。没有你们,这个巨大的里程碑是不可能实现的!