go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪
富宁网站建设公司创新互联,富宁网站设计制作,有大型网站制作公司丰富经验。已为富宁近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的富宁做网站的公司定做!
https://github.com/liuyuede123/go-zero-courseware
一个外部请求需要内部若干服务的联动响应,这时候完整的调用轨迹将跨越多个服务,同时包括服务间的网络传输信息与各个服务内部的调用堆栈信息。追踪的主要目的是排查故障,如分析调用链的哪一部分、哪个方法出现错误或阻塞,输入输出是否符合预期,等等。
链路追踪中有几个比较重要的概念:
参考:凤凰架构
Jaeger 受 Dapper 和 OpenZipkin 的启发,是 Uber Technologies 以开源形式发布的分布式跟踪系统。 它由检测 SDK、用于数据收集和存储的后端、用于可视化数据的 UI 以及用于聚合跟踪分析的 Spark/Flink 框架组成。
jaeger架构如下:
首先我们需要在项目根目录下增加jaeger和elasticsearch的Dockerfile。
jaeger的查询和收集器服务配置了支持的存储类型 - 目前是 Cassandra 或 Elasticsearch。
这里我们使用elasticsearch做存储
FROM rancher/jaegertracing-all-in-one:1.20.0
LABEL maintainer="liuyuede123 "
FROM elasticsearch:7.13.1
LABEL maintainer="liuyuede123 "
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"
- ":"
- "4317:4317"
- "4318:4318"
- ":"
- ":"
- ":"
- "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:/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: user-rpc
Endpoint: http://jaeger:/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: courseware-api
Endpoint: http://jaeger:/api/traces
Sampler: 1.0
Batcher: jaeger
Telemetry:
Name: courseware-rpc
Endpoint: http://jaeger:/api/traces
Sampler: 1.0
Batcher: jaeger
dcoker-compose up -d
启动新增的jaeger服务和elasticsearch服务
请求接口看下jaeger中服务是否写入成功
访问http://localhost:/查看是否安装成功