广告

Prometheus 2.0正式推出 性能提升带来质的飞跃

  • 浏览(420)
  • 评论(0)
  • 译者:k8s

    

本文译者: Jonathan Zhang,K8S技术社区特约作者。

Prometheus 2.0正式推出 性能提升带来质的飞跃

Kubernetes使复杂环境的管理变得容易,但为了确保可用性,对Kubernetes组件以及集群上运行的所有应用程序的运维拥有洞察至关重要。监控是保证良好生产环境的关键,这也是为什么Prometheus监控系统被开发的原因。Prometheus是云原生计算基金会(CNCF)负责的一个项目,在基础设施和应用程序监控方面迅速普及,当前正在迈出下一步。

近日,经过三个alpha、六个beta和三个发布候选,Prometheus2.0正式宣布稳定。

在探索这个版本的好处之前,让我们回过头来讨论一下为什么需要一个新的存储层。

时间序列和动态环境

Prometheus的监控理念鼓励在堆栈的所有层中使用高度详细的指标。容器的状态、流经它们的请求,甚至在容器中运行的应用程序的深层内部状态都可以通过指标来进行探索,Prometheus提供了强大的查询语言来帮助将这些指标整合并转化为可操作的洞察。

Prometheus将数据作为时间序列进行收集和存储,这些时间序列是定期收集的时间戳数据点的序列。这种设计很容易导致每个正在运行的容器暴露数千个或更多的时间序列。在数百到数千个容器的规模里 ,在一个集群上追踪数百万个时间序列并不罕见。

很明显,不断将数据写入数百万个时间序列是一个技术挑战。更糟糕的是,Kubernetes使得不断毁灭旧容器并创造新容器变得非常容易。对于持续部署、自动扩展和批量作业调度,这个模型非常强大,因此会随着时间的推移而变得越来越普遍。

每个容器都有一个唯一的标识,并且它的所有时间序列都与该标识关联以获得最佳洞察。因此,虽然正在积极追踪的时间序列数量大致是固定的,但Prommetheus使得可访问的时间序列数据的总体历史记录却不断增长。对数十亿个时间序列进行查询是一个全新的挑战,但是我们决心让Prometheus能够应对这一挑战。

新的存储引擎是为了解决这个挑战而写的。它使用倒排索引,支持全文搜索,在Prometheus的时间序列可能具有的任意维度上提供快速查找。新的磁盘格式确保了相关时间序列数据的良好配置,而预写式日志使得Prometheus 2.0对崩溃具有弹性。

因此,Prometheus也变得更容易操作。Prometheus 1.x的用户对各种可以将存储调整到预期负载的配置旋钮都非常熟悉。而添加新的存储层后,这些控制不再需要。

基准

这项工作的真实结果是令人印象深刻的。 Prometheus 2.0中的资源消耗在所有资源类别上大大减少和稳定,而新的索引方法提供了更低和更一致的查询延迟。

下面的图表显示了基准测试设置的结果,其中运行数百个应用程序pod的Kubernetes集群正在被监控。pod以非常高的频率被替换,以反映时间序列的剧烈扰动。两个Prometheus1.5实例和两个Prometheus2.0实例正在运行和摄取新的数据。每个版本的一个实例额外暴露于适度高的查询负载。

从这两张图可以看出,Prometheus 2.0的内存和CPU消耗都显著降低,启动后相当快速地达到稳定状态。Prometheus1.5,除了要求更多的资源,还表现出不太可预测的资源使用情况:

Prometheus 2.0正式推出 性能提升带来质的飞跃

Prometheus 2.0正式推出 性能提升带来质的飞跃

然而,Prometheus2.0中最引人注目的改进是每秒写入磁盘的数据量,如下图所示。新版本写入磁盘的数据减少了两个数量级。这增加了固态硬盘的使用寿命,从而降低成本。在高系列扰动下,即使使用相同的时间序列压缩算法,也可以观察到显著的磁盘空间节省:

Prometheus 2.0正式推出 性能提升带来质的飞跃

最后,查询延迟在Prometheus 1.5中随着时间的推移而线性增加。 Prometheus 2.0从一开始就保持稳定的性能,这导致了响应性更强的查询,如下图所示:

Prometheus 2.0正式推出 性能提升带来质的飞跃

还有什么是新的?

Prometheus 2.0的大部分工作都集中在提高性能,使其更易于操作。但是新的存储层也被设计成易于与Prometheus外部进行交互,这使得围绕其收集的时间序列数据能够产生大量的定制化工具。

快照备份是一个被经常要求的功能。当启动标志–web.enable-admin-api时,Prometheus 2.0通过一个简单的API调用来支持它们:

$ curl -XPOSThttp://<prometheus>/api/v2/admin/tsdb/snapshot{“name”:”2017-10-18T13:44:35Z-3f6a679bb001e65d”}

快照位于具有返回名称的目录中,并且可以上传到存档存储,但几乎不占用任何额外的磁盘空间。最重要的是,新的Prometheus服务器可以通过将备份数据简单移动到新服务器的数据目录来启动。

有关更改的完整列表以及如何从Prometheus 1.x迁移,请查看官方公告和迁移指南。

试试看!

Prometheus 2.0增强功能最大的好处是,Prometheus不仅能比以前更好地支持现在的Kubernetes工作负载,而且它还有足够的空间来支持未来的工作负载,因为Kubernetes可以增加基础设施的活力。

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头