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 的体验更加一致和直观。最值得注意的是陈旧数据处理,这是最古老和最受请求的路线图项目之一。通过新的改进,现在可以显式跟踪消失的监控目标或来自这些目标的序列,从而减少查询伪像并提高警报响应能力。
其他改进
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 服务器读取数据。
最后,我们要感谢所有广泛测试预发布版本并帮助我们调试问题的用户。没有你们,这个巨大的里程碑是不可能实现的!