【夜莺(Flashcat)V6监控】3.链路追踪

news2024/11/26 10:34:34

链路追踪

介绍

链路追踪是分布式系统下的一个概念,它的目的就是要解决上面所提出的问题,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

在夜莺中,链路追踪是基于Jaeger建立的数据源,本身并不对接任何agent的。
视频课程对这块讲的也不多,在第二讲说了一下,藏经阁也没有详细说,仅在数据查询中提了一下;
为方便大家了解我在这里科普一下,方便的大家可以跑起来观测。

藏经阁介绍

夜莺的链路追踪能力,是基于 Jaeger 来实现的,在数据源管理页面配置好 Jaeger 数据源之后,即可展示在 Jaeger 存储的 Trace 信息,夜莺提供了两种查询 Trace 信息的方式,一种是通过 Service+Opertation+标签 筛选,一种是之前根据 Trace ID 来筛选。

夜莺-链路追踪

相关配置

资源

  • 🔧Jaeger (Jaeger v1.43.0)https://www.jaegertracing.io
  • 🔧Agent (opentelemetry-javaagent.jar 1.23.0)opentelemetry-javaagent
  • 🔧N9e-v6最新版以是(v6.0.0-ga.6):https://flashcat.cloud/download/nightingale
  • 🔧Categraf(v0.3.2):https://flashcat.cloud/download/categraf
  • 🔧VictoriaMetrics(v1.90.0):https://github.com/VictoriaMetrics/VictoriaMetrics/releases
  • 🔧Redis(v-6.2.6,已出7版本了,我这里用的旧的):https://download.redis.io/releases/redis-6.2.6.tar.gz

相关配置

Jaeger部分

夜莺接入数据,文章开头也说了直接接的Jaeger的源,也就是Jaeger完全可以跑,数据可以查;没有夜莺的干预都正常使用为前提;

Jaeger

首先跑起我们的Jaeger;首先在服务器上解压Jaeger的压缩包:jaeger-1.43.0-linux-amd64.tar.gz。

# tar zxf jaeger-1.43.0-linux-amd64.tar.gz

会看到
Jaeger程序目录
启动Jaeger,直接all-in-one:

nohup ./jaeger-all-in-one &> jaeger.log &

启动后访问http://127.0.0.1:16686/;看看正常不;注意换成自己的IP;
Jaeger界面
Jaeger官网上说了很多端口:
Jaeger端口
实际并没有这么多,由我们需要就可以;
Jaeger默认端口

应用加Agent上传数据看结果

我这便是用的Java的项目做的测试;所以用了opentelemetry-javaagent.jar;大家根据自己的实际情况;Opentelemetry支持很多的agent的,
opentelemetry-instrumentation
此处使用springboot项目测试;需配置javaagent,由于Opentelemetry也是一个集大成者,所以相关配置需要多配置一点;

-javaagent:/opt/Monitor/opentelemetry/opentelemetry-javaagent.jar
-Dotel.service.name=ot-ide-ry
-Dotel.metrics.exporter=none
-Dotel.traces.exporter=jaeger
-Dotel.exporter.jaeger.endpoint=http://127.0.0.1:14250

重点说几点

  • opentelemetry 自带metrics是开启的,我们只需要链路跟踪,所以这里屏蔽掉
  • opentelemetry-javaagent使用自家协议(OTLP)上报;这里我们用Jaeger所以需要调整
  • exporter.jaeger.endpoint是上报接收地址

** 关于opentelemetry 对 Jaeger exporter的介绍**
放一下连接:Jaeger exporter
The Jaeger exporter. This exporter uses gRPC for its communications protocol.

System propertyEnvironment variableDescription
otel.traces.exporter=jaegerOTEL_TRACES_EXPORTER=jaegerSelect the Jaeger exporter
otel.exporter.jaeger.endpointOTEL_EXPORTER_JAEGER_ENDPOINTThe Jaeger gRPC endpoint to connect to. Default is http://localhost:14250.
otel.exporter.jaeger.timeoutOTEL_EXPORTER_JAEGER_TIMEOUTThe maximum waiting time, in milliseconds, allowed to send each batch. Default is 10000.

Java项目启动完成并上报数据后,我们就可以从Jaeger-UI中看到数据了,确认好就可以配置夜莺了;
jaeger-ui
找到我们记得服务,选一个接口看看数据;
jaeger-app-Operation

夜莺部分

夜莺部分相对简单,找到我们的数据源;添加Jaeger即可;
n9e-resource
Jaeger数据源配置界面:
n9e-jaeger-setup
配置好之后,在链路追踪-即时查询中就可以看到了;
n9e-trace
点击链路也是可以看到耗时的;
n9e-trace-Operation

总结

本章将了夜莺添加链路追踪,大家都学会了吗?
注意事项:

  1. 夜莺的链路追踪仅是数据源的配置;所有数据都在Jaeger;不是实现的Jaeger的协议直接接收数据并存储;起初没理解,将应用上报数改为了夜莺的端口报错还在社区问了一下。😅😅😅
  2. 夜莺接入的链路追踪大多数的配置是在原有的apm这块;

疑问
这里看到夜莺的数据源方式接入比较好的可以接入原有的监控数据作为数据进行展示;非常的不错👍👍👍
告警这块是包含链路追踪的告警呢?❓❓❓
夜莺是否还有接入其他的数据源呢?❓❓❓
大家还有什么疑问可以去夜莺社区看一下,由什么疑问大佬会给你解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/538780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 把一个 List 转换为字符串

在本快速指南中,我们将会解释如何在 Java 把一个 List 转换为 String 字符串。 这个在某些特定的场合可能比较有用,比如说在控制台中输出 List 中的内容,转换为可以人为阅读的内容来进行调试。 使用 List 中标准的 toString() 方法 一个最简…

(2)数码管

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件 51单片机是共阴极连接 74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱…

【网络编程】详解UDP/TCP套接字的创建流程

目录 一、网络编程套接字 1、一些概念 1.1源IP地址和目的IP地址 1.2端口号port 1.3TCP和UDP的性质 1.4网络字节序、IP地址类型转换、数据接收与发送函数、popen函数 2、UDP套接字 2.1UDP服务器创建流程 2.2UDP客户端创建流程 2.3创建socket套接字 2.4绑定套接字对应…

快速找出PATH 路径下重复的命令程序文件

RT,就是想找出命名冲突的可执行文件。日积月累的,PATH 环境变量里乱七八糟堆了一堆东西,很可能想叫一个命令出来,结果实际执行的是另一个地方的程序。 Python 脚本 import ospath os.environ[PATH] folders path.split(;) fil…

理解HttpSession

什么是session 在我刚刚从事后端开发的时候,有一个问题困扰了我很久。 就有个玩意叫session。 PostMapping("login")public Result login(RequestParam("id") String id,RequestParam("password") String password, HttpSession se…

哈希及模拟实现

文章目录 哈希1. 哈希相关概念1.1 哈希概念1.2 哈希冲突1.3 哈希函数1.4 哈希冲突解决1.4.1 闭散列/开放定址法(1)线性探测(2) 二次探测 1.4.2 开散列/哈希桶 2. 开放定址法的实现2.1 结构2.2 插入Insert2.2.1 传统写法2.2.2 现代写法 2.3 查找Find2.4 删除Erase2.5 整体代码 3…

springcloud基于web的智慧养老平台

系统分析 可行性分析 在开发系统之前要进行系统可行性分析,目的是在用最简单的方法去解决最大的问题,程序一旦开发出来满足了用户的需要,所带来的利益也很多。下面我们将从技术、操作、经济等方面来选择这个系统最终是否开发。 1、技术可行…

一图看懂 dateutil 模块:Python datetime 模块的扩展,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 dateutil 模块:Python datetime 模块的扩展,资料整理笔记(大全) 🧊摘要🧊模块图🧊类关系…

005、数据库结构

数据库结构 1、数据库集簇逻辑结构2、对象标识符3、数据库集簇物理结构4、其它目录结构表空间物理文件位置1、数据库集簇逻辑结构 • 数据库集簇逻辑结构 数据库 : 把数据逻辑分开存放。 对象是放在数据库当中。表空间: 把数据从逻辑或者物理上分割存放2、对象标识符 Postg…

Weblogic SSRF 漏洞(CVE-2014-4210)

SSRF漏洞 ​ SSRF(服务端请求伪造),指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。 ​ 简单的说就是利用一个可…

《统计学习方法》——隐马尔可夫模型(下)

学习算法 HMM的学习,在有观测序列的情况下,根据训练数据是否包含状态序列,可以分别由监督学习算法和无监督学习算法实现。 监督学习算法 监督学习算法就比较简单,基于已有的数据利用极大似然估计法来估计隐马尔可夫模型的参数。…

详解二叉树

🌈目录 一、树形结构​ 🌳1.1 概念1.2 其他概念1.3 树的表示形式 二、二叉树✨2.1 概念2.2 两种特殊二叉树2.3 性质2.4 二叉树存储 三、二叉树的基本操作🙌3.1 前置说明3.2 二叉树的遍历3.3 二叉树的基本操作 四、二叉树的OJ✍️ 一、树形结构…

springboot+vue医院信管系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院信管系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

Service Control Manager 服务管理器简介

在windows驱动开发流程中,写完sys驱动binary之后,为了让OS能够正确的从注册表中读取到对应的信息,并且将其load运行起来,还需要编写inf文件来描述配置驱动文件。不过这也不是必须的,可以通过ServiceControlManager直接…

Fiddler 抓包工具 - 全网最全最细教程,没有之一

Fiddler 简介 Fiddler 是位于客户端和服务器端的 HTTP 代理 目前最常用的 http 抓包工具之一 功能非常强大,是 Web 调试的利器 监控浏览器所有的 HTTP/HTTPS 流量 查看、分析请求内容细节 伪造客户端请求和服务器响应 测试网站的性能解密 HTTPS 的 Web 会话 全局…

Go语音基于zap的日志封装

zap日志封装 Zap是一个高性能、结构化日志库,专为Go语言设计。它由Uber开源,并且在Go社区中非常受欢迎。它的设计目标是提供一个简单易用、高效稳定、灵活可扩展的日志系统。 以下是Zap的一些主要特点: 1.高性能:Zap的性能非常出…

【Linux】权限的理解

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

mysql exist和in的区别

一、演示用的表 为了演示二者的区别,先建立两张表 user 表和 order 表 二、in 的执行情况 in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,…

接口测试之Jenkins+Jmeter+Ant实现持续集成

安装Jenkins,见手把手教小白安装Jenkins_程序员馨馨的博客-CSDN博客 一)Linux机器上安装Jmeter 百度一下就好 二)Linux机器上安装Ant 1、下载安装包 进入Apache Ant - Binary Distributions,下载安装包,本次安装的是版…

高仿某东商城flutter版本,个人学习flutter项目

前言 高仿某东商城flutter版本,个人学习flutter项目 使用flutter_redux状态管理网络使用dio进行了简单的封装使用node项目mock服务端接口(mock_server目录)目前只实现了首页,其他功能持续更新… 同款Android Kotlin版本( https://github.co…