Grafana系列-统一展示-11-Logs Traces无缝跳转
系列文章
概述
如前文 Grafana 系列 - 统一展示 -1- 开篇所述, Grafana 可以了解所有相关的数据--以及它们之间的关系--对于尽快根治事件和确定意外系统行为的真正来源非常重要。Grafana 允许团队在一个地方对所有的数据进行无缝的可视化和跳转。
最典型的就是 Grafana Labs 的 LGTM 技术栈,包括:
- Loki(Logging)
- Grafana(可视化)
- Tempo(Tracing)
- Mimir(Metrics)

通过如下的技术细节,可以实现 Logging、Tracing、Metrics 的无缝可视化和跳转:
- Metrics -> Logs: 基于服务发现和统一 labels
- Logs -> Metrics: 基于 LogQL 提取 Metric 指标
- Logs -> Traces: 基于衍生字段 (fields) 或自动化的日志
- Traces -> Logs: 基于 labels
- Traces -> Metrics: 基于来自 spans 的 Metric 指标
- Metrics -> Traces: 基于 Prometheus 的 Exemplars.
具体如下图:

即使没有采用 Grafana Labs 的解决方案,也仍然能实现一定程度的无缝跳转。
如:
- Logging 使用 EFK
- Tracing 使用 Jaeger
如果日志中也包括 trace_id, Name 至少可以通过 trace_id, 实现 Logs -> Traces 的无缝跳转。
Notes:
前提是: 日志中包括
trace_id相关字段.
当然, 日志中就包含trace_id字段, 属于开发对日志格式规划地比较好了. 这使得运维侧配置跳转逻辑简单了很多.
更多情况下, 是要结合clusternamespaceapppod等字段/label 进行查询. (而非直接通过trace_id直接定位.)
实战 Logs(ElasticSearch) To Traces(Jaeger)
Notes:
实战场景: 针对报错日志, 定位到出错的 Trace.
首先, 更新 ES 数据源配置, 增加 Data links 相关配置:
- Field:
trace_id(根据实际情况配置, 也可能是traceId等) - Internal link: ️, 并选择一个 Trace(Jaeger) 数据源
- Query:
${__value.raw}
之后, 可以通过ES 日志快速搜索仪表板, 筛选出ERROR 日志, 点击展开 details, 会发现 trace_id 会带一个跳转链接, 如下图:

点击后, 会直接跳转到 Explore -> Jaeger 页面, 并带有出错的 trace_id, 同时显示链路拓扑和 trace 瀑布图, 如下图:


总结
至此, 我们完成了一个非常简单的, 从 Logs(ElasticSearch) 到 Trace(Jaeger) 的单向跳转. 但已经会为我们分析问题提供较大的便利了.
如果需要实现 Metrics, Logs, Traces 三者的双向跳转, 那么在这三者的解决方案需要是特定的方案, 另外这三者的数据源、Dashboard 和 Query 中都需要有更多精细的配置。包括不限于:
- 上文提到的三者之间的联动配置
- 各个数据源上配置 Data link、Derived fields、Exemplars、Trace to logs、Trace to Metrics 等
- 在 Dashboard 上添加 Text 等 Panel,并结合 Variable 用于更友好地跳转
- 在 Panel 配置 panel link 用于更友好地跳转
- ...
以此抛砖引玉,希望读者可以做出更精美、实用的监控统一展示和无缝跳转方案。
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Grafana系列-统一展示-11-Logs Traces无缝跳转的更多相关文章
- Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
简介 Grafana Labs 简介 Grafana 是用于时序数据的事实上的仪表盘解决方案.它支持近百个数据源. Grafana Labs 想从一个仪表盘解决方案转变成一个可观察性 (observa ...
- Grafana 系列文章(一):基于 Grafana 的全栈可观察性 Demo
️Reference: https://github.com/grafana/intro-to-mlt 这是关于 Grafana 中可观察性的三个支柱的一系列演讲的配套资源库. 它以一个自我封闭的 D ...
- Grafana 系列文章(二):使用 Grafana Agent 和 Grafana Tempo 进行 Tracing
️URL: https://grafana.com/blog/2020/11/17/tracing-with-the-grafana-cloud-agent-and-grafana-tempo/ ✍A ...
- Grafana 系列文章(三):Tempo-使用 HTTP 推送 Spans
️URL: https://grafana.com/docs/tempo/latest/api_docs/pushing-spans-with-http/ Description: 有时,使用追踪系统 ...
- Grafana 系列文章(十一):Loki 中的标签如何使日志查询更快更方便
️URL: https://grafana.com/blog/2020/04/21/how-labels-in-loki-can-make-log-queries-faster-and-easier/ ...
- Grafana 系列文章(十二):如何使用Loki创建一个用于搜索日志的Grafana仪表板
概述 创建一个简单的 Grafana 仪表板, 以实现对日志的快速搜索. 有经验的直接用 Grafana 的 Explore 功能就可以了. 但是对于没有经验的人, 他们如何能有一个已经预设了简单的标 ...
- 分布式监控系统Zabbix--使用Grafana进行图形展示
今天介绍一款高颜值监控绘图工具Grafana,在使用Zabbix监控环境中,通常我们会结合Grafana进行图形展示.Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插 ...
- Grafana 系列文章(六):Grafana Explore 中的日志
️URL: https://grafana.com/docs/grafana/latest/explore/logs-integration/#labels-and-detected-fields D ...
- Grafana 系列文章(七):Grafana Explore 中的 Tracing
️URL: https://grafana.com/docs/grafana/latest/explore/trace-integration/ Description: Tracing in Exp ...
- Grafana 系列文章(十):为什么应该使用 Loki
️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-stre ...
随机推荐
- 重构:banner 中 logo 聚合分散动画
1. 效果展示 在线查看 2. 开始前说明 效果实现参考源码:Logo 聚集与散开 原效果代码基于 react jsx 类组件实现.依赖旧,代码冗余. 我将基于此进行重构,重构目标: 基于最新依赖包, ...
- 《golong入门教程📚》,从零开始入门❤️(建议收藏⭐️)
Go语言学习笔记 本菜鸟的Go语言学习笔记,历时1个月,包含了Go语言大部分的基本语法(不敢说全部),学习期间参考了各种视频,阅读了各种文章,主要参考名单如下: 点击跳转到参考名单<( ̄︶ ̄)& ...
- python进阶:带你学习实时目标跟踪
摘要:本程序主要实现了python的opencv人工智能视觉模块的目标跟踪功能. 本文分享自华为云社区<python进阶--人工智能实时目标跟踪,这一篇就够用了!>,作者:lqj_本人 . ...
- 原型继承和 Class 继承
涉及面试题: 原型如何实现继承? Class 如何实现继承? Class 本质是什么? ⾸先先来讲下 class ,其实在 JS 中并不存在类, class 只是语法糖,本质还是函数. class P ...
- vue-router面试题
1.vue-router怎么重定向页面? 答:路由中配置redirect属性 2.vue-router怎么配置404页面? 答:path: '*' 是对的 但是应该放在最后一个 3.切换路由时,需要保 ...
- Flutter 下载篇 - 叁 | 网络库切换实践与思考
前言 本文是关于使用flutter_download_manager下载功能的实践和探索.我们将基于flutter_download_manager的功能扩展,改造成自己想要的样子.在阅读本文之前,建 ...
- Thanos工作原理及组件简介
Thanos 简介 Thanos 是一个「开源的,高可用的 Prometheus 系统,具有长期存储能力」.很多知名公司都在使用 Thanos,也是 CNCF 孵化项目的一部分. Thanos 的一个 ...
- 设计模式(三十一)----综合应用-自定义Spring框架-自定义Spring IOC-定义解析器、IOC容器相关类
3 定义解析器相关类 3.1 BeanDefinitionReader接口 BeanDefinitionReader是用来解析配置文件并在注册表中注册bean的信息.定义了两个规范: 获取注册表的功能 ...
- 案例(一) Z-Indexing Geometry
使用官方github包,部分解释来源于Viewer - Cesium Documentation Cesium.Ion.defaultAccessToken = " ...
- Python常见部分内置方法与操作
Python常见内置方法与操作 整型int 类型转换 int(其它数据类型),但只支持数字类型和小数类型 >>> num1 = input('Your age>>> ...