go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪
0、转载
go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪
0.1源码地址
https://github.com/liuyuede123/go-zero-courseware
1、链路追踪
一个外部请求需要内部若干服务的联动响应,这时候完整的调用轨迹将跨越多个服务,同时包括服务间的网络传输信息与各个服务内部的调用堆栈信息。追踪的主要目的是排查故障,如分析调用链的哪一部分、哪个方法出现错误或阻塞,输入输出是否符合预期,等等。
链路追踪中有几个比较重要的概念:
- trace:从客户端发起请求抵达系统的边界开始,记录请求流经的每一个服务,直到到向客户端返回响应为止,这整个过程就称为一次trace
- span:由于每次 Trace 都可能会调用数量不定、坐标不定的多个服务,为了能够记录具体调用了哪些服务,以及调用的顺序、开始时点、执行时长等信息,每次开始调用服务前都要先埋入一个调用记录,这个记录称为一个Span。应含有时间戳、起止时间、Trace 的 ID、当前 Span 的 ID、父 Span 的 ID 等能够满足追踪需要的信息
- OpenTracing:OpenTracing 是一套与平台无关、与厂商无关、与语言无关的追踪协议规范,只要遵循 OpenTracing 规范,任何公司的追踪探针、存储、界面都可以随时切换,也可以相互搭配使用。

参考:凤凰架构
2、jaeger
Jaeger 受 Dapper 和 OpenZipkin 的启发,是 Uber Technologies 以开源形式发布的分布式跟踪系统。 它由检测 SDK、用于数据收集和存储的后端、用于可视化数据的 UI 以及用于聚合跟踪分析的 Spark/Flink 框架组成。
jaeger架构如下:

- Instrumentation SDKs:集成到应用程序和框架中以捕获跟踪数据的库。 从历史上看,Jaeger 项目支持使用各种编程语言编写的自己的客户端库。 它们现在被弃用,取而代之的是 OpenTelemetry
- Jaeger Agent: Jaeger 代理是一个网络守护程序,用于侦听通过 UDP 从 Jaeger 客户端接收到的 span。 它收集成批的它们,然后将它们一起发送给收集器。 如果 SDK 被配置为将 span 直接发送到收集器,则不需要代理
- Jaeger Collector: Jaeger 收集器负责从 Jaeger 代理接收跟踪,执行验证和转换,并将它们保存到选定的存储后端
- Storage Backends: Jaeger 支持各种存储后端来存储跨度。 支持的存储后端有 In-Memory、Cassandra、Elasticsearch 和 Badger(用于单实例收集器部署)
- Jaeger Query:这是一项服务,负责从 Jaeger 存储后端检索跟踪信息,并使其可供 Jaeger UI 访问。
- Jaeger UI:一个 React 应用程序,可让您可视化跟踪并分析它们。 对于调试系统问题很有用。
- Ingester:只有当我们使用 Kafka 作为收集器和存储后端之间的缓冲区时,ingester 才是相关的。 它负责从 Kafka 接收数据并将其摄取到存储后端。 更多信息可以在官方 Jaeger Tracing 文档中找到。
3、go-zero中集成jaeger
首先我们需要在项目根目录下增加jaeger和elasticsearch的Dockerfile。
jaeger的查询和收集器服务配置了支持的存储类型 - 目前是 Cassandra 或 Elasticsearch。
这里我们使用elasticsearch做存储
FROM rancher/jaegertracing-all-in-one:1.20.0
LABEL maintainer="liuyuede123 <liufutianoppo@163.com>"
FROM elasticsearch:7.13.1
LABEL maintainer="liuyuede123 <liufutianoppo@163.com>"
docker-compose.yml中增加jaeger和elasticsearch的配置。
...
jaeger:
build:
context: ./jaeger
environment:
- TZ=Asia/Shanghai
- SPAN_STORAGE_TYPE=elasticsearch
- ES_SERVER_URLS=http://elasticsearch:9200
- LOG_LEVEL=debug
privileged: true
ports:
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778"
- "16686:16686"
- "4317:4317"
- "4318:4318"
- "14250:14250"
- "14268:14268"
- "14269:14269"
- "9411:9411"
networks:
- backend
restart: always
elasticsearch:
build:
context: ./elasticsearch
environment:
- TZ=Asia/Shanghai
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
privileged: true
ports:
- "9200:9200"
networks:
- backend
restart: always
go-zero中已经内置支持jaeger,所以只需要配置下就可以使用
我们在之前创建的user-api,user-rpc,courseware-api,courseware-rpc中增加链路追踪相关的配置
需要在.yaml中增加配置
...
Telemetry:
Name: user-api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: user-rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: courseware-api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: courseware-rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
dcoker-compose up -d启动新增的jaeger服务和elasticsearch服务
请求接口看下jaeger中服务是否写入成功
访问http://localhost:16686/查看是否安装成功

go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪的更多相关文章
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...
- 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...
- 使用Docker Compose搭建Service Mesh
使用Docker Compose搭建Service Mesh 本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务
0.索引 go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务 0.1源码地址 https://github.com/liuyuede123/go-zero ...
- go-zero docker-compose 搭建课件服务(五):完善user服务
0.转载 go-zero docker-compose 搭建课件服务(五):完善user服务 0.1源码地址 https://github.com/liuyuede123/go-zero-course ...
- go-zero docker-compose搭建课件服务(四):生成Dockerfile
0.转载 go-zero docker-compose 搭建课件服务(四):生成Dockerfile并在docker-compose中启动 0.1源码地址 https://github.com/liu ...
- go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构
0.转载 go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构 0.1源码地址 https://github.com/liuyuede123/go-zero-co ...
随机推荐
- 聊聊Spring事务控制策略以及@Transactional失效问题避坑
大家好,又见面了. 在大部分涉及到数据库操作的项目里面,事务控制.事务处理都是一个无法回避的问题.比如,需要对SQL执行过程进行事务的控制与处理的时候,其整体的处理流程会是如下的示意: 首先是要开启事 ...
- DolphinScheduler 线上 Meetup 视频回放(07.25)
上周六下午 DolphinScheduler 社区联合 Doris 社区进行了 2020 年首次线上 Meetup,各位讲师都做了非常精彩的分享,也吸引了 1900 多位技术伙伴观看. 其中 Dolp ...
- Git 05 文件操作
参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 文件的四种状 ...
- 基于 Apache Hudi 和DBT 构建开放的Lakehouse
本博客的重点展示如何利用增量数据处理和执行字段级更新来构建一个开放式 Lakehouse. 我们很高兴地宣布,用户现在可以使用 Apache Hudi + dbt 来构建开放Lakehouse. 在深 ...
- 哔哩哔哩b站提取Cookie方法,bilibili获取Cookie教程
大家可能对Cookie很陌生,甚至不知道是干嘛用,没关系,今天小编详细给大家讲解! Cookie是保存在客户端的纯文本文件,比如txt文件,所谓的客户端就是我们自己的本地电脑,当我们使用自己的电脑通过 ...
- Linux应急响应学习
Linux应急响应-系统日志排查-溯源 溯源 找到攻击者.系统日志分析攻击者的ip 攻击者可能留下了一些代码 样本 网上的信息很大程度上是不可信的. 方法: 蜜罐 高交互的蜜罐 溯源: ip 日志 ...
- Android 自动取色并设置沉浸式状态栏
Android 自动取色并设置沉浸式状态栏 - Stars-One的杂货小窝 最近在进行产品的优化,也是研究了下沉浸式状态栏的实现方法及自动取色,记录一下笔记 设置沉浸式状态栏 1.添加依赖 这里,是 ...
- MySQL5.7.35的安装
Step①: 下载安装包,MySQL下载地址:百度 Step②: 解压至你的安装路径,我个人是在E盘存放. Step③: 配置环境变量. ①:在系统属性中,点击环境变量. ②:找到环境变量-> ...
- KingbaseESV8R3对于order by null列的处理
背景 客户遇到一个现象order by 列是null的时候,最后一行总是显示相同的值.不要问我为什么对空值排序,意义何在?客户代码如此,客户不愿意改代码,作为dba大家都懂的.客户认为即使对null排 ...
- KingbaseES图形化安装未弹出界面应该如何处理
关键字: KingbaseES.X Windows.Gnome.DISPLAY 一.Linux下图形安装环境要求 1) 系统首先安装了X Windows的图形化支持软件包. 2) 系统安装了KDE ...