Grafana Tempo如何简化分布式追踪

1,109 阅读7分钟

New Tech Forum

新技术论坛

作者: Joe Elliott,InfoWorld

关于

技术专家剖析的新兴技术

Grafana Tempo如何简化分布式追踪

Grafana Tempo是一个开源的、易于使用的、高容量的分布式追踪系统,它利用了100%的采样,并且只需要一个对象存储后端。

戴尔

在可观察性的三大支柱中,追踪在使用上历来落后于日志和指标。我们希望通过Grafana Tempo来改变这种状况,这是一个易于操作、规模大、成本低的分布式追踪后端。

Tempo允许用户以比以往更低的操作成本和复杂性来尽可能地扩展追踪。Tempo的唯一依赖是对象存储,它只支持通过跟踪ID进行搜索。与其他追踪后端不同,Tempo可以在没有难以管理的Elasticsearch或Cassandra集群的情况下实现大规模的追踪。

我们在2020年10月启动了这个开源项目,仅仅7个月后,我们就兴奋地宣布Tempo已经达到了GA v1.0。

在过去的几个月里,我们主要关注的是稳定性、查询路径的水平分片,以及提高规模的性能改进。我们还特别为后端追踪和写头日志增加了压缩功能,从而减少了本地磁盘I/O和处理追踪所需的总存储。

在这篇文章中,我们将对分布式跟踪进行概述,以及Tempo带来的好处。

为什么是分布式跟踪?

虽然指标和日志可以一起工作来确定一个问题,但它们都缺乏重要的元素。衡量标准是很好的集合,但缺乏细粒度的信息。日志很好地揭示了在一个应用程序中按顺序发生的事情,甚至可能是跨应用程序,但它们没有显示单个请求在一个服务中可能的行为。日志会告诉我们为什么一个服务会有问题,但也许不会告诉我们为什么一个特定的请求会有问题。

这就是追踪的作用。分布式跟踪是一种跟踪和记录单个请求的方法,因为它穿过了你的基础设施中的所有服务。

Grafana实验室

上面的屏幕图像显示了一个Prometheus查询,它在大约18毫秒内通过四个不同的服务。有很多关于如何处理该请求的细节。如果这个请求花了10秒,那么追踪可以告诉我们它在哪里花了这10秒--也许是它为什么在某些区域花了时间--以帮助我们了解基础设施中发生了什么,或者如何解决一个问题。

在追踪中,跨度是一个特定应用程序中工作单位的代表,它们由上述查询中的所有横条代表。如果我们对后端、数据库或缓存服务器进行查询,我们可以用跨度来包装这些查询,以获得这些部分所需时间的信息。

跨度之间的关系有几种不同的方式,但主要是通过父-子关系。所以在上面的查询中,有两个相关的跨度,其中promqlEval是父级,promqlPrepare是子级。这种关系就是我们的追踪后端如何能够接受所有这些跨度,将它们重建为一个单一的追踪,并在我们要求时返回该追踪。

为什么是Grafana Tempo?

在Grafana实验室,我们对我们的分布式追踪系统的下采样感到沮丧。找到一个_样本_ 追踪通常并不困难,但我们的工程师经常想找到一个_特定的_ 追踪。

我们希望我们的追踪系统能够始终回答这样的问题:"为什么_这个_ 客户的查询很慢?"或者 "一个间歇性的错误又出现了。我可以看到_确切的_ 跟踪吗?"

我们决定要100%的采样,但我们不想管理Elasticsearch或Cassandra集群来完成这个任务。

然后我们意识到,我们的追踪后端不需要对我们的追踪进行索引。我们可以通过日志典范来发现蛛丝马迹。为什么要花钱去索引你的痕迹_、_ 日志_和_ 指标?我们所需要的只是一种按ID来存储痕迹的方法。这就是我们创建Tempo的原因。

Grafana实验室

Tempo用于摄取和存储Grafana实验室的生产、暂存和开发环境的整个读取路径。目前,我们每秒摄取220万个跨度,存储132TB的压缩跟踪数据,总计740亿个跟踪。我们检索一个跟踪的时间是~2.2秒。

指标、日志和跟踪之间的关联性

有了Tempo,在指标、日志和跟踪之间建立更多关联的愿景正在成为现实。

从日志到追踪的链接

Loki和其他日志数据源可以被配置为从日志行的跟踪ID创建链接。使用日志,你可以通过路径、状态代码、延迟、用户、IP地址或其他任何你可以塞进同一日志行的跟踪ID来搜索。

考虑一下这样的一行。

path=/api/v1/users status=500 latency=25ms traceid=598083459f85afab userid=4928

所有这些字段现在为你在Tempo中的跟踪ID提供了一个可搜索的索引。通过将我们的追踪与我们的日志建立索引,我们允许各个团队在他们的追踪中定制他们的索引。每个团队都可以在同一行记录下对他们有意义的trace ID的任何字段,它也会立即为trace创建一个可搜索的字段。

从Loki 2.0开始,如果任何日志中包含一个跟踪的标识符,你可以点击它,直接跳到Tempo中的那个跟踪

Grafana实验室

从度量衡到追踪的链接

使用范例,现在可以直接从度量标准中发现跟踪。

Grafana实验室

日志可以让你根据记录的字段找到你要搜索的确切的跟踪,而典范可以让你找到一个示范性的跟踪。你可以根据你的指标查询直接在你的Grafana图中嵌入追踪的链接。使用Prometheus查询调用p99s、500错误代码或特定的端点,而你的所有跟踪现在都成为你正在寻找的模式的相关例子。

从痕迹到日志的链接

所以,典范和日志可以用来发现,Tempo可以用来存储一切,而不用担心账单。为了从追踪器链接回日志,Grafana代理允许你用一致的元数据来装饰你的追踪器、日志和指标,然后创建以前不可能的关联。从典范案例跳转到追踪之后,你现在可以直接进入奋斗服务的日志。追踪可以立即确定你的请求路径中的哪个元素导致了错误,而日志可以帮助你确定原因。

Grafana实验室

了解更多关于Grafana Tempo的信息

加入我们的Grafana Slack #tempo频道或tempo-users谷歌小组,并观看我们的GrafanaCONline会议,"使用Grafana Tempo的开源分布式跟踪",以深入了解Tempo。Tempo分布式跟踪现在也可以作为我们完全管理的、可组合的可观察性平台Grafana Cloud的免费和付费层的一部分;免费层中包括50GB的跟踪。

_Joe Elliott是Grafana实验室的首席工程师。
_

新技术论坛为探索和讨论新兴的企业技术提供了一个前所未有的深度和广度的场所。选择是主观的,是基于我们对我们认为重要的和InfoWorld读者最感兴趣的技术的挑选。InfoWorld不接受用于出版的营销材料,并保留对所有投稿内容进行编辑的权利。请将所有咨询发送至newtechforum@infoworld.com

相关的。

Copyright © 2021IDG Communications, Inc.

如何选择一个低代码开发平台