搭建链路追踪系统 Jaeger

news2024/11/16 4:18:26

搭建链路追踪系统 Jaeger

架构

架构图
jaeger-els

架构设计

在设计以 Jaeger 为中心的链路追踪系统时,我们采用微服务架构模式。

  • Jaeger 作为核心追踪系统,负责收集、存储和展示分布式追踪数据。
  • Elasticsearch 作为后端存储,提供数据的持久化和高效的搜索能力。
  • 系统还包括 Jaeger AgentCollectorQuery 服务和 UI 界面、Kibana

各服务功能

  • Jaeger Client:集成在应用程序中,自动收集追踪数据并发送给 Agent
  • Jaeger Agent:运行在每个服务节点上,接收来自 ClientSpan 数据,并批量发送到 Collector
  • Jaeger Collector:接收处理来自 Agent 的数据,并存储到 Elasticsearch
  • Elasticsearch:存储追踪数据,提供数据索引和搜索能力。
  • Jaeger Query:查询 Elasticsearch 中的追踪数据,供 UI 展示。
  • Jaeger UI:提供用户界面,使用户能够查询和分析追踪数据。
  • Kibana: 提供数据可视化能力,支持多种图表展示。

流程概述

流程包括:

  1. 服务发起调用,Jaeger Client 在服务端自动创建 Span
  2. Jaeger Agent 收集 Span 并批量发送给 Jaeger Collector
  3. Jaeger Collector 处理接收到的 Span 并存储到 Elasticsearch
  4. Jaeger Query 服务从 Elasticsearch 获取数据,提供给 Jaeger UI 展示。
  5. Jaeger UI 展示 Span 数据,用户可以查询和分析。
  6. Kibana 查看,过滤日志数据,提供数据可视化能力。

部署

部署策略

使用 Docker 部署 Jaeger 及相关服务。利用 Docker Compose 定义服务,实现一键部署和管理。Docker 镜像包括 Jaegerall-in-one 镜像和 Elasticsearch 镜像。Compose 文件配置服务间的网络和端口映射。

docker-compose.yaml

services:
  #jaeger链路追踪 — Jaeger for tracing
  jaeger:
    image: jaegertracing/all-in-one:1.42.0
    container_name: jaeger
    restart: always
    ports:
      - "5775:5775/udp"
      - "6831:6831/udp"
      - "6832:6832/udp"
      - "5778:5778"
      - "16686:16686"
      - "14268:14268"
      - "9411:9411"
    environment:
      - SPAN_STORAGE_TYPE=elasticsearch
      - ES_SERVER_URLS=http://root:passwd@elasticsearch:9200
      - LOG_LEVEL=debug
    networks:
      - default

networks:
  default:
    external:
      name: log-collect_looklook_net

Jaeger-ui

jaeger-ui
kibana-index

jaeger-index
jaeger-log

在这里插入图片描述

优劣势分析

使用 JaegerElasticsearch优势包括:

  • 高效性:Elasticsearch 提供快速的数据索引和查询能力。
  • 可扩展性JaegerElasticsearch 都能水平扩展,适应大规模分布式系统。
  • 易用性Docker 部署简化了环境配置和管理。
  • 可视化Jaeger UI 提供直观的追踪数据展示。

然而,也存在一些劣势

  • 资源消耗Elasticsearch 作为存储解决方案,可能会占用较多的存储和计算资源。
  • 复杂性Docker 容器管理和服务编排增加了系统的复杂性。
  • 性能调优:需要对 JaegerElasticsearch 进行适当的配置和调优,以满足性能要求。

综上所述,以 Jaeger 为中心,结合 Elasticsearch 存储的链路追踪系统,提供了一套完整的追踪解决方案,适用于需要高性能和可扩展性的分布式系统。通过 Docker 部署,我们能够实现快速、灵活的系统搭建和管理。

项目地址

Log-Collect

openui-svelte-build

openui-backend-go

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

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

相关文章

网鼎杯之unfinish

题目来源:网鼎杯 2018 题目描述:SQL 问题:给一个页面,如何判断其有漏洞 通过awvs扫描得知存在 register.php 注册页面,并且注册界面存在SQL盲注漏洞。 题目提示SQL,在注册页面测试无果,且发现输…

解决Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题

今天在Ubuntu系统上,使用sudo apt update命令,进行更新时,弹出"无法解析域名 cn.archive.ubuntu.com"问题,如图(1)所示: 图(1) 弹出"无法解析域名 cn.archive.ubuntu.com" 错误 出现这种现象的原因…

C++并发编程(一):线程基础

简介 本文学习的是 b 站 up 恋恋风辰的并发编程教学视频做的一些笔记补充。 教程视频链接如下:线程基础:视频教程 文档链接如下:线程基础:笔记文档 理论上直接看 up 提供的笔记文档即可,我这里主要是记录一些我自己…

免费qq号码估价的工具和软件

目前有多种 qq 号码估价的工具和软件。例如,晒号网的 QQ 估价器可以根据 QQ 号码等级、QQ 号码资深度、QQ 号码年限、活跃时间等进行准确的 QQ 号码估价。此外,还有其他一些相关的估价软件和平台,如 QQ 号码估价 2.0 全新玩法,利用…

复现opendrivelab的“点云预测”项目

本文的主要工作就是复现下述论文中的算法。 该论文全称:Visual Point Cloud Forecasting 论文内容在此不做过多介绍,直接上项目。 一、准备工作 首先通读readme.md文件的内容,了解所需要的相关依赖和数据等内容。 一定要多读几遍&#xf…

C# udp通信测试助手

1、UI界面和最终实现功能测试 2、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threa…

【C++BFS算法】2998. 使 X 和 Y 相等的最少操作次数

本文涉及知识点 CBFS算法 LeetCode2998. 使 X 和 Y 相等的最少操作次数 给你两个正整数 x 和 y 。 一次操作中,你可以执行以下四种操作之一: 如果 x 是 11 的倍数,将 x 除以 11 。 如果 x 是 5 的倍数,将 x 除以 5 。 将 x 减 …

Linux项目实战——业务系统(后附百问网课程视频链接)

处理配置文件 一、main函数流程 初始化显示系统——>初始化输入系统——>初始化文字系统——>初始化页面系统——>业务系统 二、业务系统框架 1. 读取配置文件 2. 根据配置文件生成按钮、界面 3. 读取输入事件 4. 根据输入事件找到按钮 5. 调用按键的OnPressed函…

小程序开发怎么申请HTTPS证书?

小程序开发中申请SSL证书的流程包括选择信任可靠的SSL证书服务商、申请SSL证书、配置服务器、测试验证以等。以下将具体分析这个过程: 1、选择信任可靠的SSL证书服务商: 选择信任可靠的证书服务商,致命的证书服务商可以提供可靠的产品和完善…

【已解决】页面操作系统功能,诡异报错500nginx错误

【已解决】页面操作系统功能,诡异报错500nginx错误,后台没有任何报错信息 不知道啥原因 清理了浏览器缓存 也没有效果 还有一个表现情况,同样的操作,有时可以又是不行 因为报错ng的代理问题,检查了ng配置 后续经过同…

Unity强化工程 之 SpriteEditer SingleMode

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 因为unity不只是3d需要,还有2d游戏需要大量编辑处理图片素材,所以需要了解Sprite(精灵…

Cesium初探-实体

在 Cesium 中,"实体"(Entity)是一个核心概念,它代表了可以在场景中渲染的任何东西,从简单的点、线、多边形到复杂的模型和图像。实体可以用来表示地理空间数据,如地标、轨迹、卫星轨道等。 以下…

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈,以及如何用C语言去实现。 1. 栈的概念及结构 栈:一种特殊的线性表,它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 栈中元素遵循后进先出…

PXE实现linux系统批量自动安装

实验环境: 1、RHEL7主机 2、主机图形化 3、配置网络可用 4、关闭vmware dhcp功能 一、实验环境准备 1、主机图形化 在安装安装RHEL7系统时,选择图形化安装,如果没有选择,可以在后面通过命令安装,如下&#xff1…

Pinia状态管理库

为了跨组件传递JWT令牌,我们就会利用Pinia状态管理库,它允许跨组件或页面共享状态。 使用Pinia步骤: 安装pinia:cnpm install pinia 在vue应用实例中使用pinia 在src/stores/token.js中定义store 在组件中使用store 1.在main.js文…

sql注入靶场sqli-labs常见sql注入漏洞详解

目录 sqli-labs-less1 1.less1普通解法 1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入) 2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接…

MySQL增删改查(基础)

1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…

电子琴——Arduino

音调有7个音调,分别是哆来咪发索莱西;如果用蜂鸣器来发出这七个音调就要分别设置这七个音调对应频率。 电子琴实现需要物品有,arduino开发板一个,按键7个,蜂鸣器1个,杜邦线若干 重点讲一下按键原理 按键开…

linux运维一天一个shell命令之vim详解

前言: 在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景 一、定义 Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快…

【神软大数据治理平台-高级动态SQL(接口开发)】

1、背景 业务部门需大数据平台按照所提需求提供企业数据接口,基于神软大数据治理平台-高级动态SQL功能,满足业务需求,如下: (1)业务系统需求: 输入: enterpriseName:…