博客/社区

彭博遥测技术的发展

2018年6月28日6分钟

肖恩·汉森和斯蒂格·索伦森从左到右:肖恩·汉森和斯蒂格·索伦森

在荒凉的西部进行监控

彭博拥有5000名工程师,32.5万名运行其软件的客户,2个完全拥有和运营的数据中心,全球200个节点站点,以及近40年来开发的多样化架构,彭博有很多理由致力于监控。Bloomberg遥测技术和软件开发主管Stig Sorensen在GrafanaCon EU会议上表示,该公司经历了一段漫长、曲折和持续的旅程,才实现了现在强大的遥测技术。

在很长一段时间里,开发人员负责监控他们构建和部署的产品,对许多人来说,这只是事后的想法,“大部分是作为最低可行性产品构建的,”Hbob手机app官网anson说。这在全公司范围内造成了问题,他补充道:“我们无法从全局角度了解任何数据保存在哪里。多个系统正在收集数据,其中许多数据是重叠的,收集方式略有不同。如果你想要将这些数据连接在一起,你必须编写大量一次性的粘合代码,然后你就把它们扔掉了。”

整个公司的大量重复工作导致了“一堆不同形状的轮子,有些是方形的而不是圆形的。”但汉森指出,也许最大的问题是“很多这些技术都依赖于它们试图监控的东西。”

拥抱开源软件

Hanson的团队开始为公司的所有基础设施和应用程序提供监控和报警服务,并为工程师提供现场自助服务。对于所有不同的应用程序所有者和基础设施团队,彭博需要一个易于使用、灵活的系统,具有低延迟和高吞吐量,并支持图形化和仪表板。

汉森表示:“我们必须将自己与彭博所有传统的内部技术完全区分开来。”“市场上有一些非常好的开源软件,我们在彭博社已经有了一些重复的工作,我们能够做到这一点。我们也从过去的错误中吸取了教训。给我们的客户灌输了很多逻辑,这意味着事后很难改变。我们基本上确保我们放入客户端的任何东西都是尽可能低水平的,并尽可能快地获得数据。”

第一个迭代是带有标记支持的自主开发的StatsD代理。“我们在客户机中有一些基本的逻辑,在机器上的代理中有一些更多的逻辑,但是我们的大多数验证、转换、持久化、规则处理——所有这些都集中在我们竖起的卡夫卡墙后面的一组机器上完成,”他说。这个工具允许人们建立自己的规则。共享系统设置了特定的时间序列分配,但也允许例外。

用硬件解决问题

然而,规模化成了一个问题。汉森说:“两年后,我们达到了每秒250万个数据点,1亿个时间序列。”“有些指标有很高的基数,比如50万。所以我们最初的解决方案对我们来说规模相当大。比我们第一次发布的时候多了十倍。但是,每当我们增加机器数量时,我们就增加了团队的操作开销:更多的机器故障。它并不总是能完美地处理机器故障。随着时间的推移,我们有了新用户、更多数据、更复杂的用例,这些用例要求我们提供我们从未考虑过的特殊功能。”为了适应预期的增长,团队试图将现有的系统放在更多更大更快的机器上。汉森说:“我们能够将这一数据提高到每秒2000万个数据点。” “But we couldn’t actually query anything out of it while it was doing that, and it still was really poor at handling high cardinality metrics, which was a pretty common use case. So while we could try to keep throwing more hardware at that, it wouldn’t really solve that fundamental design issue. So we had to build something else.”

输入:Metrictank

根据用户反馈,团队尝试开发一个对用例有意义的解决方案。特性请求包括允许派生度量计算、可配置保留和元数据查询的基本功能。汉森开玩笑说:“我们开始着手编写自己的时间序列数据库,这正是世界所需要的。”

大规模运行监控系统几乎是与用户的军备竞赛。只要你给他们一个功能,他们就会爱上它,他们会忘记自己从未拥有过它,他们想要更多。-彭博社的肖恩·汉森

幸运的是,Sorensen已经与《Grafana》团队进行了交谈,并将《Metrictank》的情况告诉了Hanson。汉森说:“它几乎满足了我们单子上的所有要求。”“对于高基数数据,这是我们上一个系统的杀手,它快了两个数量级。这对我们来说很重要。这打开了很多我们以前不能做的查询,特别是涉及公司范围的查询,能够对所有父集群进行分析,比较本周与上周的CPU使用情况,诸如此类。我们不得不为最后一件事编写Python脚本,那是一点一点的,需要花几个小时来运行,现在我们可以在一个查询中完成。”彭博社最初缺少但需要的其他功能,比如标签,很快就被添加进去了。汉森说:“我们在彭博社进行了大规模运行,将我们所有的数据都发布在了上面。”“有几个地方使用了相当多的资源,大多数都是唾手可得的果实。我们可以删除一些指针或字符串或其他东西,并将其贡献回来,现在它运行得非常顺利。” Of course, the journey continues. “Running a monitoring system at scale is pretty much an arms race with your users,” said Hanson. “As soon as you give them a feature, they love it, they forget they never had it, and they want more.”

从经验中学到的智慧

回顾彭博遥测技术的发展历程,Hanson给出了以下建议:

  • “仅仅因为某件事以一种方式发展,并不意味着它在其他地方没有瓶颈。”
  • “保持密切的关注,建立人际关系网,对不断发展和改变你的系统持开放态度,这些都会对你有所帮助。如果Stig没有和Grafana Labs的人交流,我们甚至都不知道Metrictank的存在。”bob电竞频道
  • “总是抽象你的集成点。”
  • “让人们易于使用。我们不需要强迫任何迁移。我们只是做了一个比他们更好的系统,人们可以选择加入。”

观看完整的演示视频如下:

####下载[演示幻灯片](//www.tubolov.com/files/grafanacon_eu_2018/Bloomberg_GrafanaCon_EU_2018.pdf)。