博客/文化

持续分析如何帮助跟踪资源使用情况、减少延迟等等

2022年7月8日9分钟

2019年,Polar Signals创始人兼首席执行官弗雷德里克·布兰克齐克(Frederic Branczyk)预测,连续剖面将是可观测性的未来。

今天,他正在用他的开源持续剖析工具,Parca.在这集"格拉夫纳的大帐篷播客上,我们的主持人Matt Toback和Tom Wilkie与Frederic聊了聊他是如何开始在持续剖析领域的,以及他是如何围绕Parca建立一个活跃的开源社区的。

聆听本文,了解持续剖析如何帮助您优化资源使用并减少延迟,Frederic在构建业务方面仍在思考什么,以及投资自动化如何带来价值。

注:本文字记录为篇幅和清晰度进行了编辑。

持续剖析的兴起

汤姆·威尔基:弗雷德里克,你是怎么从普罗米修斯变成侧写的?

弗雷德里克Branczyk:2018年,我读了谷歌的一篇论文,他们描述了如何通过始终分析其基础设施中的所有内容,他们实际上拥有对资源使用做一些事情的知识。更重要的是,他们能真正理解什么才是最大的胜利。

谷歌在这篇文章中描述了他们每个季度都能通过这样做来降低基础设施成本。我从一些谷歌员工那里听说,有些数字每个季度都有好几个百分点。

我想要这个工具!在那个时候,真的没有什么能做到这一点。我当时在做这些性能超级灵敏的软件Prometheus和Kubernetes,我只是觉得我可以用这个。

汤姆:我记得在2019年,你和我付出KubeCon的主题演讲你预言了持续侧写的兴起。你只是在完成自己的预言吗?

弗雷德里克:这是正确的。就像他们说的,如果你想预测未来,你就得自己建造,对吧?

马特·Toback:我们很幸运,你没有预测到一些可怕的事情…

弗雷德里克:总有时间的!在我看了那篇论文之后,我看到了这个市场的机会和缺口。因为我的经验普罗米修斯,我觉得我有能力构建这个工具。所以我把这个几乎没有编译,几乎没有工作的概念证明放在一起,我也很有创意地把它叫做ConProf,用于连续剖析。

然后在2020年,我决定退出红帽。没有任何公司只专注于持续剖析,所以我创办了这家公司极性信号让它成为我的全职工作。

在Polar Signals工作了一段时间后,我们了解了空间、技术,并与一些用户和客户合作,我们学到了很多东西。我们把所有的知识汇编成开源Parca项目.Parca是ConProf项目的发展。Parca的重点是让所有东西都是零配置。您不需要对设置进行任何更改,并且应该自动获得概要分析。这就是Parca特工的哲学。

什么是持续剖析?它是如何工作的?

马特:那么到底什么是持续剖析呢?

弗雷德里克:一个很容易理解的例子是按需分析。假设您看到了资源使用的增加——比如CPU使用。然后你做一个一次性的档案,试着找出什么使用了更多的资源。

连续剖析本质上就是一直这样做。有几种不同类型的CPU配置文件,但我们关心的是采样配置文件。一个采样概要文件意味着大约每秒100次,我们查看程序的当前堆栈跟踪。根据我们观察到的堆栈跟踪,我们可以统计地推断出在这些函数上花费了多少时间。这就是CPU分析——只是我们随时间观察到的堆栈跟踪的聚合。

随着时间的推移,当您拥有所有这些数据时,您可以将流程版本的整个生命周期与新推出的版本进行比较。或者你可以比较两个不同的时间点。假设有一个CPU或内存峰值。我们实际上可以理解我们的过程中有什么不同,直到行号。

它是超级强大的,它是在可观察性方面已经很有用的其他工具的扩展,但它对我们运行的程序有不同的启示。

“Parca的重点是让所有东西都变成零配置。您不需要对设置进行任何更改,并且应该自动获得概要分析。这就是Parca Agent的理念。”
-弗雷德里克·布兰克齐克

汤姆:如果不断地转储正在运行的应用程序的堆栈,会带来什么样的开销?

弗雷德里克:这是人们真正关心的一个大问题,因为他们已经做了日志记录、跟踪和度量,并且他们已经关心开销。分析通常被认为是一项繁重的工作。

采样分析是帮助解决这种开销的第一个创新。我们可以调整采样率-每秒100次,每秒50次,等等-来改变开销。但最终,我们能够获得的最大开销减少是从根本上改变我们获取数据的方式。今天,我们用eBPF

使用eBPF,我们只捕获内核空间中需要的数据,然后每十秒从内核空间导出一次。这就是我们看到开销大幅减少的地方。用户看到的CPU使用开销不到百分之一,而将CPU时间从10%节省到30%。我们所经历的几乎都是胜利。

在构建开源业务时获得的经验教训

汤姆:您谈到了正在分析的应用程序的开销,以及对其进行分析的容易程度。听起来会产生很多信息。如何存储和分析这些数据?

弗雷德里克:说实话,我们还在想办法。我们确实经历了几次迭代,每一次迭代我们都做得更好。它开始看起来像一个专门建造的柱状商店。

另一部分是涉及到大量元数据:函数名、文件名、行号。如果我们看看Kubernetes,它涉及数百万行代码。我想我们已经知道该怎么做了。它本质上是一个键值存储,我们同时从它请求大量的键,并且我们已经在基于键值存储的分布式数据库中构建了超伸缩连接。

汤姆:非常酷。假设我每秒跟踪所有应用程序100次,我会担心网络账单吗?

弗雷德里克:所需资源的数量几乎每天都在变化。我们已经从100g减少到20g,但我们有很多计划来进一步减少它。

“通过与电子商务领域的客户合作,我们意识到像延迟优化这样的事情将是巨大的. . . .这对了解人们真正需要什么非常有帮助。”
-弗雷德里克·布兰克齐克

汤姆:不错,不错。计算所需的资源对你如何利用这些资源开展业务有很大的影响——决定要支付什么费用以及你的利润率是多少。你能分享一下你是如何考虑围绕Parca开展业务的吗?

弗雷德里克:本质上这和Grafana实验室做的事情是一样的。bob电竞频道我们打算提供持续的分析作为一种服务,这样我们的客户就可以专注于他们的业务。我们将处理奇怪、缩放,以及一些对企业客户来说很有趣的功能。

马特:社区对项目的期望与您想要实现的目标是一致的还是不同的?

弗雷德里克:在Polar Signals与用户和客户直接合作,我们得到了很多有用的反馈。我们有自己的想法,但通过与电子商务领域的客户合作,我们意识到像延迟优化这样的事情将是巨大的。他们实际上不太关心基础设施的成本节约;他们更关心通过降低延迟来提高转化率。这对了解人们真正需要什么很有帮助。

如何围绕一个开源项目创建一个社区

汤姆:你是如何在帕尔卡周围建立社区的?

弗雷德里克:我想要真正有意识地去除我们在SRE领域中所谓的“辛劳”——所有通过一直手工操作而不能真正产生价值的事情。我们希望专注于创造价值。

所以发布过程中的一切都是完全自动化的。当我们在GitHub上标记一个版本时,它会自动触发发布管道,发布更新日志,然后将容器图像推送到注册表,如果容器图像已经成功上传,它会重新部署文档,并使用最新版本重新模板所有内容。通过这种自动化,我们已经能够在Parca发布的两个月内创建20-25个版本。它腾出了很多时间来专注于创造价值。

“每个人都渴望开源项目的即时成功。但我了解到,坚持做一件事,并长期坚持下去,意味着你更有可能真正生产出有用的东西,因为你会得到用户的反馈。”
-弗雷德里克·布兰克齐克

汤姆:当我们推出《Grafana Loki》和《Grafana Tempo》时,我们所做的其中一件事就是,作为一个开发团队,我们努力做到真正的开放和可访问。我喜欢这种工作方式。你在帕尔卡也做类似的事情吗?

弗雷德里克:是的,正是如此——这是我们想要非常用心的事情。每两周帕尔卡的办公时间是国际标准时间周二下午5点。我们使用Discord,使用它是一种乐趣。

汤姆:对于那些想要启动自己的开源项目并围绕它建立社区的人,你有什么建议吗?

弗雷德里克:根据我的经验,每个人都渴望开源项目的即时成功。但我了解到,坚持做一件事并长期坚持下去,意味着你更有可能真正生产出有用的东西,因为你会得到用户的反馈。

ConProf项目在一开始并没有得到很好的访问,文档也不是特别好。但它仍然增长到800颗星,仅仅是因为我每隔一两个月就会提交一次。只要你在解决你真正感兴趣的问题,坚持下去真的很有帮助。

不要错过“格拉夫纳的大帐篷”的最新剧集!你现在可以订阅我们的新播客苹果播客而且Spotify