docker部署jaeger+es+kibana链路追踪

Docker下Jaeger部署文档

近来在学习到Jaeger链路追踪的时候,顺带学习了一下如何去部署Jaeger在服务器上

关于Jaeger

Jaeger 受到DapperOpenZipkin的启发,是由Uber Technologies作为开源发布的分布式跟踪系统。它用于监控和故障排除基于微服务的分布式系统,包括:

  • 分布式上下文传播
  • 分布式事务监控
  • 根本原因分析
  • 服务依赖分析
  • 性能/延迟优化

技术规格

先来看一下Jaeger的架构

在这里插入图片描述
在这里插入图片描述

你可以使用Kafka收集JaegerCollector的数据 经过flink处理

这里我使用的是 Jaeger-Collector + Jaeger-Query + Elasticsearch + kibana进行收集

看一下Jaeger-Collector + Jaeger-Query的定义

Collector

Jaeger收集器从 SDK 或 Jaeger代理接收跟踪,通过处理管道运行它们以进行验证和清理/丰富,并将它们存储在存储后端中。

Jaeger 内置了对多个存储后端的支持(请参阅部署),以及用于实现自定义存储插件的可扩展插件框架。

Query

Jaeger查询是一种服务,它公开用于从存储中检索跟踪的API,并托管用于搜索和分析跟踪的 Web UI。

开始部署

1.下载对应的docker镜像

这里通过dockerhub可以搜索到对应的镜像了

下载jaeger对应镜像

#collector镜像
docker pull jaegertracing/jaeger-collector:latest
#query镜像
docker pull jaegertracing/jaeger-query:latest

下载es+kibana对应镜像

#注意:这里我使用的是7.12.0版本 最好是使用7版本的es
docker search elasticsearch:7.12.0
docker pull kibana:7.12.0

我是通过查阅官方文档选择的7版本

自 0.6.0 起支持 Jaeger 支持的版本:5.x、6.x、7.x

Elasticsearch 版本自动从 root/ping 端点检索。基于此版本,Jaeger 使用兼容的索引映射和 Elasticsearch REST API。可以通过--es.version=标志显式提供版本。

除了安装和运行 Elasticsearch之外,Elasticsearch不需要初始化 。一旦运行,将正确的配置值传递给 Jaeger 收集器和查询服务。

2.启动对应的镜像

#1.创建一个docker网络
docker network create es-kibana
#2.启动es和kibana容器
#这里就不过多赘述 将es容器和kibana容器启动在同一个dokcer网络中即可

#3.启动Jaeger-Collector容器 随后我们讲暴露端口的作用
docker run -d --name jaeger-collector -p 14268:14268 -p 14269:14269 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://你自己的ip:9200 jaegertracing/jaeger-collector:latest

#4.启动Jaeger-Query容器 随后我们讲暴露端口的作用
docker run -d --name jaeger-query -p 16686:16686 -p 16687:16687 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://你自己的ip:9200 jaegertracing/jaeger-query:latest

⭐️先启动es 再启动Jaeger的两个容器

2.1 Collector暴露的端口

在这里插入图片描述

这里摘自Jaeger的官方文档,有兴趣自己可以去研究一下Jaeger部署-collector

大概意思就是14268端口是用于接受外部client的数据,14269是用于监控健康指标的。

2.2 Query暴露的端口

在这里插入图片描述

这里同样摘自Jaeger官网,感兴趣的可以去研究一下Jaeger部署-query

大概意思就是16686端口是用于WebUI的,16687是用于监控健康指标的。

3.测试最终效果

3.1 准备测试文件
// 注意!这里仅是测试的一个函数 并不包括完全的过程,仅用于测试部署,不涉及链路追踪知识
func{
    // 父span
    newCtx, span := otel.Tracer(traceName).Start(ctx, "getUserID", trace.WithSpanKind(trace.SpanKindServer))
    defer span.End()

    fx.Parallel(
        func() {
            //子span一
            _, span := otel.Tracer(traceName).Start(newCtx, "getUserInfo", trace.WithSpanKind(trace.SpanKindServer))
            span.End()
        }, func() {
            //子span二
            _, span := otel.Tracer(traceName).Start(newCtx, "getMember", trace.WithSpanKind(trace.SpanKindServer))
            span.End()
        })
}

3.2查看效果

打开浏览器,在地址栏上输入服务器ip:16686访问

记得确保自己防火墙有开放端口!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H56yr8GU-1674735951271)(assets/image-20230126201901049.png)]
在这里插入图片描述

我们继续点开kibana查看数据是否发往es存储

浏览器输入你自己的ip:5601

我们继续点开kibana查看数据是否发往es存储

在这里插入图片描述

这是就可以看到数据成功发往es了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值