博客/社区

彭博社如何通过Metrictank和Grafana每天跟踪数千亿个数据点

2019年4月17日8分钟

彭博社最为人所知的是一家拥有新闻目的地的媒体公司网站,其获奖杂志彭博商业周刊以及它每天24-7的社交媒体项目,抽搐Toc在Twitter上。

但这家拥有38年历史的公司的主要产品实际上是彭博终端该软件系统汇总实时市场数据,并向全球32.5万多名用户提供财经新闻。企业高级服务每天处理大约1200亿条来自金融市场的数据,200万条来自其新闻部门和分支机构的报道,以及一个发送10亿条消息的消息网络(比如“即时彭博”)。

彭博(Bloomberg)生产能见度小组负责人斯蒂格•索伦森(Stig Sorenson)表示:“有了这一切,人们似乎会注意到它不起作用。“我们有过几次引人注目的故障,所以大约三年前,我们决定开始一段旅程,我们更加认真地对待遥测技术。”

自2015年以来,彭博社的中央遥测团队一直在稳步增长,其在公司内部的影响力也是如此。如今,“我们每秒存储500万个数据点,在我们的指标流中运行2500多个规则,”软件开发人员Sean Hanson在他的报告中说说话GrafanaCon 2019在洛杉矶。“我们还在日志方面做了更多的工作,每天大约有100tb的原始日志数据和许多遗留的日志规则。”

然而,他们最令人印象深刻的成就是召集了5500名工程师来简化他们的监控系统。Hanson承认:“当你有很多独立用户和很多团队时,这是一个难题。“对于很多用户来说,监控并不是优先考虑的事情……所以我们尽可能多地为他们提供服务,而不让他们真正做些什么。”

通过解决基础设施中的三个关键问题,遥测团队开始了他们的“稳定之旅”。

1.集中的数据

过去,彭博对软件进行隔离,因此宕机只影响一小部分客户。团队将收到关于次故障的警报,并利用他们自己的数据源和自己的遥测堆栈评估他们的个人产品。bob手机app官网

但是,在竖井中工作会导致出现不可预见的单点故障或警报会像滚雪球一样变成多个故障时出现问题。

在团队独立工作的情况下,“宕机将持续存在,直到情况严重到外部人员(无论是我们的环境支持团队的人员还是高级管理人员)会说,‘嘿,我认为你们可能都在独立地处理同一个问题,’”Hanson说。“然后,这些团队将把所有个人数据拼凑在一起,以追踪根本原因。”

遥测团队解决这个问题的第一步是将代理部署到尽可能多的机器上,以收集系统指标(文件系统、操作系统等)以及每台机器的进程表。遥测团队还与关键基础设施团队合作,以深入了解各个服务、队列或数据库中的系统框架。

其目标是集中数据,并在任何给定时间提供更广泛的操作基础设施。工程主管现在有高级系统运行状况指示板来监视中断。Hanson说:“一旦我们提供了所有这些显示,我们就能够缩小数据的范围,这些数据可以帮助我们在停电发生时进行分类,或者如果我们可以提醒他们,就可以防止他们。”

Grafana仪表板也成为整个组织的宝贵资产,从像Sorenson这样想要监视概述的高级管理人员,到想要在所有面板上钻取链接的开发人员,再到通过查询API提取见解以进行更复杂分析的程序员。

Hanson说:“我们为用户提供了一个地方,可以为他们的指标、日志、警报、Grafana文件夹和分布式跟踪配置一切。”

更重要的是,团队自动化了实现SRE最佳实践的流程。围绕CPU、内存、文件系统存储和服务框架的全公司规则“在用户创建新服务或启动新机器时立即生效,”Hanson说。此外,由于它们现在被连接到机器制造过程中,“即使是机器创建过程也可以发布自己的度量标准并报告故障。”

2.统一的警报

在遥测团队成立之前,彭博有各种各样的系统来创建不同的通知。

现在,不仅警报是集中的。每一个显示相关性的警报都会提供一个链接——在同一组机器上大约同一时间发生了什么,或者针对相同的基本规则发生了什么——因此团队可以快速检测出这是孤立事件还是软件问题。

汉森说:“我们生成的所有警报都有相似的外观和感觉,我们需要的基本信息集包括我们的补救计划。”“每个发出的提醒都应该在顶部有一个行动或行动呼吁。”

在标记的情况下,团队强制标记键注册,而不是标记值,以确保当用户尝试将pid或时间戳注册为标记键时,他们会收到偏离基准的警告。

Hanson补充道:“我们真的希望做正确的事情很容易,做错误的事情很难,但仍然可以做一些我们认为明智的非标准的事情。”“我们设计了api,试图促进这一点。”

Hanson说,最近团队已经主动与跨职能团队会面,“讨论用例,并指导人们使用现有的预构建解决方案,或者教他们如何使用现有工具进行构建”。bob彩票中奖计划“如果有一个非常好的用例,或者如果我们经常看到它,我们就会把它构建到我们的系统中,这样人们甚至不需要考虑它。他们就是明白。”

3.简化查询

Bloomberg的仪表盘位于一个“大型”Grafana实例中,该实例提供模板,并使用与Graphite相同的查询语言和API。

Hanson表示,随着用户逐渐适应使用这些指标,“我们的维度越来越大,用户真的想深入了解他们的数据。”“所以他们想要继续添加更多的标签或标签,而Kubernetes等框架会导致大量的瞬态时间序列。”

换句话说,更多的时间序列意味着更多的RAM。所以这便是《Metrictank》发挥作用的地方。

根据Metrictank在索引中基于模式的修剪规则和基于模式的留存规则,“我们提出了一种金发女孩方法,用户可以从三种口味中选择自己最喜欢的口味,”Hanson说。“如果他们想要10年趋势分析的汇总数据,他们可以选择更长的时间。或者,如果他们想要更高级的钻取,他们可以这样做,但他们不能长期获得数据,我们让用户选择,我们将其作为标签,MetricTank完成其余的工作。”

团队在使用Metrictank时遇到的一个障碍是,他们向用户发布了可编程访问的查询API。Hanson说:“(用户)按顺序进行大量查询,或者用户使用了Grafana中基于标签的自动补全功能。”“当你在自动完成时遇到2秒、3秒、5秒的延迟时,这是非常令人沮丧和明显的。使用查询API的测试用户越多,它就越慢,直到我们有了一个需要两天才能运行的每日报告。”

Bloomberg团队与Grafana团队密切合作,实现了推测性查询,当检测到速度较慢的对等点时,可以向其他副本发出冗余查询。这将每日报告的运行时间减少到4小时。Hanson解释道:“我们还在Metrictank中实现了本地功能,以防止通过Graphite Web进行代理。“在那之后,我们现在每天的报道只剩一个半小时了。因此,如果不尝试优化报告本身,我们真的没有太多可以优化的地方。”

那么接下来呢?

提高仪表板的可发现性是Bloomberg Telemetry的下一个项目。

彭博目前在500多个文件夹中有3500多个仪表盘,还有许多通用的仪表盘被证明是受欢迎的,并在内部被复制。但是,虽然模仿是最好的奉承方式,但这是一种糟糕的组织形式。

仪表板的名称被重复地复制,几乎无法区分,以至于很难在系统中有机地呈现原来的仪表板。汉森说:“人们只能通过门票找到他们。”

虽然文件夹和权限设置有助于限制对关键仪表板的访问和编辑权限,但它并没有解决系统中出现大量仪表板副本的问题。所以布隆伯格再次向Grafana实验室寻求解决方案。bob电竞频道

这两个团队正在共同努力增强自动完成功能。Hanson说:“这将允许我们在查询中搜索关键字、描述,甚至可能是指标名称或标签,这将是非常棒的。”

彭博社的遥测团队的目标是使用自定义加权系统,根据仪表板的受欢迎程度“打分”。他们希望开发一些功能,比如在仪表板上标记“官方”和“实验”,这样用户就能知道哪个更可靠。

另一个大项目:元标记,一种无缝且经济有效的添加元数据的方法也在开发中。

汉森说,在创建可持续的监控基础设施方面,“从一些好的开源技术开始,会让你向前迈进一大步。”“但由于不是你创建的,它可能不会马上为你工作。所以我们不能害怕投身其中,为自己和更广泛的社区改进产品。”

毕竟,“在遥测技术上投资是有回报的,”汉森说,“这是我留到最后的必要的金融笑话。”

更多信息来自GrafanaCon 2019在YouTube上查看所有的演讲。