系列文章

概述

如前文 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 字段, 属于开发对日志格式规划地比较好了. 这使得运维侧配置跳转逻辑简单了很多.

更多情况下, 是要结合 cluster namespace app pod 等字段/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无缝跳转的更多相关文章

  1. Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介

    简介 Grafana Labs 简介 Grafana 是用于时序数据的事实上的仪表盘解决方案.它支持近百个数据源. Grafana Labs 想从一个仪表盘解决方案转变成一个可观察性 (observa ...

  2. Grafana 系列文章(一):基于 Grafana 的全栈可观察性 Demo

    ️Reference: https://github.com/grafana/intro-to-mlt 这是关于 Grafana 中可观察性的三个支柱的一系列演讲的配套资源库. 它以一个自我封闭的 D ...

  3. Grafana 系列文章(二):使用 Grafana Agent 和 Grafana Tempo 进行 Tracing

    ️URL: https://grafana.com/blog/2020/11/17/tracing-with-the-grafana-cloud-agent-and-grafana-tempo/ ✍A ...

  4. Grafana 系列文章(三):Tempo-使用 HTTP 推送 Spans

    ️URL: https://grafana.com/docs/tempo/latest/api_docs/pushing-spans-with-http/ Description: 有时,使用追踪系统 ...

  5. Grafana 系列文章(十一):Loki 中的标签如何使日志查询更快更方便

    ️URL: https://grafana.com/blog/2020/04/21/how-labels-in-loki-can-make-log-queries-faster-and-easier/ ...

  6. Grafana 系列文章(十二):如何使用Loki创建一个用于搜索日志的Grafana仪表板

    概述 创建一个简单的 Grafana 仪表板, 以实现对日志的快速搜索. 有经验的直接用 Grafana 的 Explore 功能就可以了. 但是对于没有经验的人, 他们如何能有一个已经预设了简单的标 ...

  7. 分布式监控系统Zabbix--使用Grafana进行图形展示

      今天介绍一款高颜值监控绘图工具Grafana,在使用Zabbix监控环境中,通常我们会结合Grafana进行图形展示.Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插 ...

  8. Grafana 系列文章(六):Grafana Explore 中的日志

    ️URL: https://grafana.com/docs/grafana/latest/explore/logs-integration/#labels-and-detected-fields D ...

  9. Grafana 系列文章(七):Grafana Explore 中的 Tracing

    ️URL: https://grafana.com/docs/grafana/latest/explore/trace-integration/ Description: Tracing in Exp ...

  10. Grafana 系列文章(十):为什么应该使用 Loki

    ️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-stre ...

随机推荐

  1. DRF提供的请求与响应类

    一 内容协商 drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个视图子类出来提供给我们使用. Dja ...

  2. excel表格常用函数技巧大全 excel中最常用的30个函数分享

    excel中最常用的30个函数: 一.数字处理 1.取绝对值 =ABS(数字) 2.取整 =INT(数字) 3.四舍五入 =ROUND(数字,小数位数) 二.判断公式 1.把公式产生的错误值显示为空 ...

  3. Git 小技巧:忽略某些文件的更改

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/dp9Mwq7vf0ASF_FftBN8Ww 作为一枚合格的代码贡献 ...

  4. PO、VO、DAO、BO、DTO、POJO 之间的区别

    PO(Persistant Object),持久对象 这个对象是与数据库中的表相映射的Java对象. VO(Value Object),值对象 通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据 ...

  5. JS兼容问题总结

    JS兼容问题总结 "标准浏览器"和"低版本浏览器(IE)"兼容写法 一.浏览器卷去的高度和宽度 var scrollTop = document.documen ...

  6. BOW/DOM(上)

    BOM 原生对象:成为js中的内置对象,就是由 js 中的构造函数创建的对象就被称为原生对象:Object.Number.Array.Date.String.... 宿主对象:web运行环境,也就是w ...

  7. 声网AI降噪测评系统初探

    作者:孟赛斯 前言 音频质量的优化是一个复杂的系统工程,而降噪是这个系统工程中的一个重要环节,传统的降噪技术经过几十年的发展已经陷入了瓶颈期,尤其是对非平稳噪声的抑制越来越不能满足新场景的需求.而近几 ...

  8. 如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下)

    上文给大家详细介绍了在 Apinto 上实现 HTTP 与 gRPC 的协议转换的基本内容,本篇我们将继续讲解如何在 Apinto-Dashboard 中进行配置. 配置 Apinto Apinto ...

  9. CosineWarmup理论与代码实战

    摘要:CosineWarmup是一种非常实用的训练策略,本次教程将带领大家实现该训练策略.教程将从理论和代码实战两个方面进行. 本文分享自华为云社区<CosineWarmup理论介绍与代码实战& ...

  10. Python3.10 的开发环境的搭建

    安装 下载 Python3.10 或者其他版本:Download Python | Python.org 如果 Windows 操作系统下载,默认是下载 64 位操作系统的 exe 安装包:pytho ...