博客/工程

介绍Grafana Cloud Agent,这是一个专注于remote_write的Prometheus代理,可以节省40%的内存使用量

2020年3月18日5分钟

在领导了5年的Cortex开发之后,Grafana Labs不再为这个项目做出贡献。bob电竞频道2022年3月,我们推出了Grafana Mimir,这是Prometheus的开源长期存储,可以扩展到10亿个指标甚至更多。想了解更多,请阅读阅读TSDB的公告博客并参观Grafana米密尔页面。
2022年3月30

今天,我们宣布Grafana云代理(注释:现在称为Grafana代理),属于普罗米修斯为托管指标而构建,运行依赖于内存,并使用了许多使《普罗米修斯》如此出色的相同的战斗测试代码。

在Grbob电竞频道afana实验室,我们热爱普罗米修斯。我们将其用于内部监控,与Alertmanager一起使用,并将其配置为将数据通过remote_write.不幸的是,当我们在一个Prometheus中处理超过400万个活动系列时,我们的部署变得越来越难以管理。虽然大多数组织没有这么多系列,但我们越来越需要垂直扩展运行Prometheus的节点,以处理不断增长的内存使用量。

它的大内存需求导致它成为单风险故障点。如果内存耗尽,我们就不再监视我们的基础设施了。一种常见的解决方案是开始对您的Prometheus实例进行分片,但我们更喜欢在每个集群中操作一个Prometheus实例,并且适当地添加分片是非常重要的。一般来说,我们需要非常仔细地观察普罗米修斯,以保持我们的监测系统的运行。

对于以同样大规模的规模运行Prometheus的组织来说,这是一个常见的问题,并且在使用托管度量解决方案(如Cortex)时感觉更像是一个负担。Cortex的用户不需要本地存储和查询;数据已经发送到皮质remote_write,还有一个与普罗米修斯兼容的查询API。此外,如果能够更容易地对集群范围的Prometheus配置进行分片,我们就不会遇到前面提到的相同的伸缩问题。因此我们创建了Grafana云代理,当使用托管度量解决方案时,构建它是为了简化运行普罗米修斯风格的基础设施。

它是什么?

正如这篇文章的标题所暗示的,Grafana云代理是Prometheus的一个子集,没有任何查询或本地存储,使用相同的服务发现、重新标签、WAL和remote_write在普罗米修斯发现的密码。由于减少了与Cortex交互所需的部分,我们的第一个版本的测试显示,与同等的Prometheus进程相比,内存使用量减少了40%。

特工可以部署,也可以不部署主机过滤.启用主机筛选后,将忽略在与运行代理的机器不同的机器上发现的任何已发现目标。当将Agent作为DaemonSet部署在Kubernetes上时,这一点特别有用:每个Agent只从与代理运行在同一节点上的pods中抓取和发送度量。这允许在整个集群中分配内存使用,而不是在一个节点上,但这也意味着,如果节点本身开始遇到问题,显示这些问题的度量将不会传递给remote_write和报警系统。

不管是否启用了主机过滤,迁移到Grafana Cloud Agent都是相对轻松的,只需要进行少量迁移工作。我们已经写了简短的指南解释如何从现有的Prometheus配置配置Agent。

我可以在没有Grafana Cloud的情况下使用吗?

尽管在名称上与Grafana Cloud(我们的度量和日志托管平台)相似,但您可以将Grafana Cloud Agent用于任何支持Prometheus的平台remote_writeAPI。在未来,我们计划捆绑可选的特性,使Agent与Grafana Cloud无缝地工作,但它始终可以与任何云一起使用remote_write兼容的服务。

另一个代理商吗?

在我们冒险向世界释放另一种药剂之前,我们仔细研究了一下当今可用的药剂。虽然可以使用其他收集代理来收集Prometheus指标,但它们往往存在相同的问题。这些代理不感觉就像普罗米修斯,缺少我们依赖的功能,比如服务发现或重新标签规则。最后,备选的解决方案感觉就像一个万事通,样样不精。bob彩票中奖计划

我们采取了不同的方法。通过直接关注普罗米修斯,我们可以让它感觉像一个一流公民。我们希望用户在迁移到Agent时,与其他Agent相比,对我们的Agent做出更少的妥协,以减少摩擦。简而言之,虽然其他代理确实支持抓取普罗米修斯风格的指标,但我们的代理感觉就像普罗米修斯,因为它就是基于普罗米修斯。

权衡

通过优化Grafana Cloud Agent以减少资源需求,我们必须做出一些权衡,并删除Prometheus中的一些标准功能。最重要的是,Agent不支持记录或警报规则。乍一看,这似乎与《普罗米修斯》的主要目的完全矛盾(当然,这是为了警醒)。但是,我们现在支持在Cortex和Grafana Cloud中记录规则和警报。这有助于平衡从Agent内部删除支持的决定,尽管它也会将警报的可靠性限制在托管解决方案的可靠性上。

路线图

我们计划扩展Grafana Cloud Agent来收集由Grafana Cloud支持的所有类型的数据。对Graphite和Loki的支持最终将包括在Agent中。

同时,我们正在计划代理的另一种部署模式,我们称之为抓取服务模式,其中一个代理集群将通信并在集群中的其他代理之间平衡刮取负载。这将有助于解决本文前面提到的一些权衡问题,例如重新获得在对代理进行分片时从有问题的节点捕获指标的能力。今后请密切关注这方面的更多信息。

试试吧!

Docker映像和静态二进制文件可在GitHub发布页面.我们对代理给我们带来的好处很满意,我们也很高兴其他人也能尝试它。让我们知道你的想法!

了解更多关于皮层的知识

如果你有兴趣了解更多关于Cortex的信息,请报名参加我们定于3月31日上午9:30举行的网络研讨会,会上将有Cortex 1.0版本新功能的预览、演示,并与Cortex维维者Tom Wilkie和Goutham Veeramachaneni进行问答。