Go Zero微服务个人探究之路(十四)一步步为微服务集成 链路追踪 jaeger.

前言

链路追踪是指在分布式系统中,追踪和记录请求通过系统中各个微服务的完整路径。它能够提供每一次请求的详细执行流程和时间消耗,包括服务间调用、数据库访问、外部系统调用等

在现代的微服务架构中,一个用户请求可能需要经过多个服务的处理才能完成。这使得故障诊断和性能优化变得复杂。没有监控和链路追踪,当系统出现问题时,开发者很难快速定位问题源头,也很难全面理解系统的性能状况

jaeger是什么

Jaeger 是一个开源的分布式追踪系统,由 Uber Technologies 开发。它用于监控和诊断微服务架构下的分布式事务,帮助开发者追踪复杂的服务交互过程,从而提高系统的可观测性。Jaeger 是基于 Google Dapper 论文的原理设计的,支持多种编程语言和框架,非常适合用于构建大规模的微服务系统

附

笔者的服务器是CentOS腾讯云服务器,有些命令行可能有出入,但总体思路一致

如何配置

在服务器上安装jaeger

推荐使用docker命令安装

复制代码
docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 14250:14250 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest

有些小伙伴可能有疑问,为什么docker启动jaeger需要配置这么多端口?

  • 5775/UDP: 接收Zipkin HTTP追踪数据的端口。
  • 6831/UDP 和 6832/UDP: 用于接收Jaeger客户端发送的追踪数据。
  • 5778: 提供配置和服务发现的HTTP端口。
  • 16686: Jaeger Query服务的UI界面,通过这个端口可以访问Jaeger的Web UI来查询和查看追踪数据。
  • 14268 和 14250: Jaeger Collector的HTTP端口,用于接收追踪数据。

为GoZero的API和RPC服务编写配置文件

参考来源:

监控 | go-zero Documentation

在每个服务的配置文件添加方框内信息即可

重启服务 大功告成

得益于go zero的简便,此时我们已经配置完成了

tip

如果出现链路信息配置失败,可以将jaeger:14268改成0.0.0.0:14268

UI界面

如果你的docker命令是按照我写的一样,此时你已经可以通过ip地址加16686端口访问web界面了

在主界面左上角search,service可以筛选追踪的服务

同时具体的链路信息也可以在右上角通过TraceTimeline进行选择展示形式

相关推荐
见叶之秋几秒前
C++ 泛型世界的两块拼图:容器适配器与仿函数
java·开发语言
程序员老赵12 分钟前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端
MayBaymax15 分钟前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
Dovis(誓平步青云)23 分钟前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
嘎嘎风24 分钟前
MiniMind 学习笔记之 04 注意力之外:位置、记忆、省显存、省时间、深加工
架构·源码阅读
变量探索SEQVEC32 分钟前
一个网段里 10 个 IP,其实是同一个人:13 天蜜罐日志的攻击者画像
服务器
OsDepK39 分钟前
OSMDE_v1.9.0已加入FTP与shell功能
linux·运维·服务器
量化分析码农40 分钟前
【Python量化系统工程实战 #06】从本地脚本到云端部署:量化系统的最小可运行架构
后端
1360967572340 分钟前
页面打不开不是 Nginx 的错
前端·后端
yuniko-n41 分钟前
【Java】字符串相关坑点
java·开发语言·python