参考:grafana tempo结合loki实现分布式追踪 - 屌丝的IT - 博客园

一. Grafana Tempo 简介

常见的分布式追踪协议、系统,比较知名的有:Jaeger,Zipkin,OpenCensus 和 OpenTelemetry 等。

Grafana Tempo 是一个开放源代码,易于使用的大规模分布式跟踪后端,采用Go 语言实现。Tempo 成本低效益高,仅需要对象存储即可运行,并且与 Grafana,Prometheus 和 Loki 深度集成。Tempo 可以与任何开源跟踪协议一起使用,包括 Jaeger,Zipkin 和 OpenTelemetry。它仅支持键/值查找,并且旨在与用于发现的日志和度量标准(示例性)协同工作。

Tempo 与 Jaeger,Zipkin,OpenCensus 和 OpenTelemetry 兼容。它以任何上述格式提取批处理,对其进行缓冲,然后将其写入 GCS,S3 或本地磁盘。因此,它坚固,便宜且易于操作!

简单说,Tempo 是一个分布式追踪系统,可以使用 Jaeger,Zipkin,OpenCensus 和 OpenTelemetry 中的任何一个追踪协议。

Grafana Tempo 是一个新的开源、易于使用的大容量分布式跟踪后端。Grafana 的 Tempo 是出自 Grafana 实验室的一个简单易用、大规模的、分布式的跟踪后端。Tempo 集成了 Grafana、Prometheus 以及 Loki,并且它只需要对象存储进行操作,因此成本低廉,操作简单。

关于为什么开发 Tempo 这个系统,官方给了如下说明:

在 Grafana Labs,我们希望我们的跟踪系统总是能够回答这样的问题: “为什么这个客户的查询速度很慢? ”“一个间歇性的错误又出现了。我能看到确切的痕迹吗? ”我们发现我们自己想要 100% 的抽样,但不想管理 Elasticsearch 或 Cassandra 集群来完成它。

此外,他们发现跟踪后端不需要索引跟踪。可以通过日志和样本发现痕迹。为什么要花钱索引你的痕迹、你的日志和你的指标?我们所需要的只是一台精简的、简单的、按 id 进行追踪的存储机器。所以他们创造了 Tempo。

2. Tempo 架构:

Tempo的架构仍然分为distributoringesterqueriertempo-querycompactor这几个架构,各模块的作用:

  • distributor

启动多个端口,分别接受来自Jaeger、Zipkin和OpenCensus协议的数据,按照TraceID进行哈希并映射到哈希环上,并交由ingester进行存储处理。

  • ingester

具体负责trace数据的块存储(memcache、GCS、S3)、缓存(Memcache)和索引的处理

  • querier

负责从ingester和后端存储里面捞取trace数据,并提供api给查询者

  • compactor

负责后端存储块的压缩,减少数据块数量

  • tempo-query

tempo的一个可视化界面,用的jaeger query,可以在上面查询tempo的trace数据。

查询界面:

  • Tempo 项目地址:https://github.com/grafana/tempo,
  • 文档地址:https://grafana.com/docs/tempo/latest/

三. 优点

3.1 减少索引的大小

在丰富且定义良好的数据模型中,跟踪包含大量信息。通常,跟踪后端有两种交互:使用元数据选择器(如服务名或者持续时间)筛选跟踪,以及筛选后的可视化跟踪。

为了加强搜索,大多数的开源分布式跟踪框架会对跟踪中的许多字段进行索引,包括服务名称、操作名称、标记和持续时间。这会导致索引很大,并迫使你使用 Elasticsearch 或者 Cassandra 这样的数据库。但是,这些很难管理,而且大规模运营成本很高,所以我在 Grafana 实验室的团队开始提出一个更好的解决方案。

在 Grafana 中,我们的待命调试工作流从使用指标报表开始(我们使用 Cortex 来存储我们应用中的指标,它是一个云原生基金会孵化的项目,用于扩展 Prometheus),深入研究这个问题,筛选有问题服务的日志(我们将日志存储在 Loki 中,它就像 Prometheus 一样,只不过 Loki 是存日志的),然后查看跟踪给定的请求。我们意识到,我们过滤时所需的所有索引信息都可以在 Cortex 和 Loki 中找到。但是,我们需要一个强大的集成,以通过这些工具实现跟踪的可发现性,并需要一个很赞的存储,以根据跟踪 ID 进行键值查找。

这就是 Grafana Tempo 项目的开始。通过专注于给定检索跟踪 ID 的跟踪,我们将 Tempo 设计为最小依赖性、大容量、低成本的分布式跟踪后端。

3.2 操作简单,性价比高

Tempo 使用对象存储后端,这是它唯一的依赖。它既可以被用于单一的二进制下,也可以用于微服务模式(请参考仓库中的 例子,了解如何轻松上手)。使用对象存储还意味着你可以存储大量的应用程序的痕迹,而无需任何采样。这可以确保你永远不会丢弃那百万分之一的出错或具有较高延迟的请求的跟踪。

3.3 与开源工具的强大集成

Grafana 7.3 包括了 Tempo 数据源,这意味着你可以在 Grafana UI 中可视化来自Tempo 的跟踪。而且,Loki 2.0 的新查询特性 使得 Tempo 中的跟踪更简单。为了与 Prometheus 集成,该团队正在添加对范例exemplar的支持,范例是可以添加到时间序列数据中的高基数元数据信息。度量存储后端不会对它们建立索引,但是你可以在 Grafana UI 中检索和显示度量值。尽管范例可以存储各种元数据,但是在这个用例中,存储跟踪 ID 是为了与 Tempo 紧密集成。

这个例子展示了使用带有请求延迟直方图的范例,其中每个范例数据点都链接到 Tempo 中的一个跟踪。

3.4 元数据一致性

作为容器化应用程序运行的应用发出的遥测数据通常具有一些相关的元数据。这可以包括集群 ID、命名空间、吊舱 IP 等。这对于提供基于需求的信息是好的,但如果你能将元数据中包含的信息用于生产性的东西,那就更好了。   例如,你可以使用 Grafana 云代理将跟踪信息导入 Tempo 中,代理利用 Prometheus 服务发现机制轮询 Kubernetes API 以获取元数据信息,并且将这些标记添加到应用程序发出的跨域数据中。由于这些元数据也在 Loki 中也建立了索引,所以通过元数据转换为 Loki 标签选择器,可以很容易地从跟踪跳转到查看给定服务的日志。

下面是一个一致元数据的示例,它可用于Tempo跟踪中查看给定范围的日志。

3.5 云原生

Grafana Tempo 可以作为容器化应用,你可以在如 Kubernetes、Mesos 等编排引擎上运行它。根据获取/查询路径上的工作负载,各种服务可以水平伸缩。你还可以使用云原生的对象存储,如谷歌云存储、Amazon S3 或者 Tempo Azure 博客存储。更多的信息,请阅读 Tempo 文档中的 架构部分。

Grafana Tempo简介相关推荐

  1. 可视化工具Grafana:简介及安装

    可视化工具Grafana:简介及安装 随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况.因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力. 官网地址: ...

  2. grafana 简介

    grafana 简介 tags: grafana 文章目录 grafana 简介 1. Grafana OSS 2. 功能 2.1 Explore metrics, logs, and traces ...

  3. Grafana 系列文章(十五):Exemplars

    Exemplars 简介 Exemplar 是用一个特定的 trace,代表在给定时间间隔内的度量.Metrics 擅长给你一个系统的综合视图,而 traces 给你一个单一请求的细粒度视图:Exem ...

  4. jmeter的性能监控框架搭建记录(Influxdb+Grafana+Jmeter)

    查看笔记 http://note.youdao.com/noteshare?id=c700365713abb98bd3d10e6f45393af9&sub=6F4E14FF3F9D4167AE ...

  5. Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务

    作者 | 白玙 近日,数据可视化公司 Grafana Labs 与阿里云建立核心合作伙伴关系.双方将发挥各自优势,在可观测性产品.服务支持等方面展开全方位合作,共同打造 Grafana 托管服务,帮助 ...

  6. Grafana 仪表盘和图形编辑器

    Grafana 是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana 可以在浏览器显示数据图表和警告.该软件的企业版本提供更多的扩展功能.扩展功能通过插件的形式提供 ...

  7. 轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana)

    轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana) Loki简介 简介 ​ Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用 ...

  8. 华为:海思坚持研发尖端半导体,不会进行任何重组或裁员;荣耀50即将发布,预约人数破百万;Grafana 8.0发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  9. Prometheus + Grafana 监控和告警

    文章目录 0,数据接入和告警流程 1,Prometheus 1.1 Prometheus 主程序 1.1.1 修改配置文件:prometheus.yml 1.1.2 验证配置是否正确,然后启动服务(w ...

  10. 使用Grafana+OPENTSDB方式Export和Import图表

    根据Grafana官方文档和网上的一些教程,尝试了将一个制作好的dashboard导出,并且在需要时重新导入dashboard,但是其中碰到了一些问题,因此将自己的操作过程整理了一下. 1.Expor ...

最新文章

  1. idea中设置指向源代码Scala
  2. linux(1)- 简单的 shell 解释器
  3. python numpy np.array_Python | numpy | np.split()与np.array_split()函数
  4. 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
  5. 《Migrating to Cloud-Native Application Architectures》学习笔记之Chapter 2. Changes Needed
  6. GWT HTML editor
  7. twig php代碼,有没有办法在wordpress的.twig文件中编写php代码?我试图使用.twig模板文件中的表单值发送邮件...
  8. 日常一些需要搜索,需要花功夫但又简单的东西 此文会持续更新
  9. 452A - Eevee 模拟字符串,挺简单的一道题
  10. 论文写作之参考文献格式
  11. 新知实验室--腾讯云TRTC体验
  12. python hist函数_Python pandas.DataFrame.hist函数方法的使用
  13. k型热电偶材料_什么是k型热电偶_k型热电偶的测量范围
  14. 幻立方解法之素数3阶幻立方
  15. CSS-浏览器缩放使边框大小改变,导致布局改变的问题
  16. 【Google Earth Studio】进阶编辑技巧
  17. 通用嵌入式系统测试平台 ETest简介
  18. 拼多多0元团购是真的吗?需要支付邮费吗?在哪参团?
  19. 致远A8-m协同管理系统
  20. WordPress资源下载主题插件 | WP资源下载管理插件

热门文章

  1. 图片批量合成PDF方法
  2. 电脑版微信,QQ语音通话耳机听不到对方声音
  3. 【JavaScript】打印星型金字塔
  4. CISSP-OSG-要点总结梳理
  5. 奶爸日记3 - 给鑫鑫做的第一顿饭
  6. 我的团长我的团第二集
  7. gym102536部分简要题解
  8. 硬盘格式化后数据怎么恢复找回?试下这个!
  9. 2018年河南省高中计算机考试,【改革 】 2018年河南中考将采取4+6+1模式,高中自主招生已确定...
  10. 5G网络5G技术初探