这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
最近我了解到微服务里有个叫链路追踪的功能,可以帮助开发人员优化性能和排查问题。
正好我前两天一直困惑怎么才能知道开发的服务性能咋样,然后我去找了压测,先是经历百度,查到wrk可以做压测,然后安装又出了问题,unzip一直安装不上,弄服务器,弄虚拟机浪费了很多时间,后面又想到之前直播课有同学提到过一个工具,我翻回去找到了这个叫Jmeter的软件,下载安装一条龙,然后是测试,还不错,本来打算就用这种方式的,但是我了解到链路追踪Jaeger后,又想尝试一下,下面直接开始正题。
首先,有一个问题需要思考一下,jaeger是用于微服务的,用于追踪各个服务之间的调用情况,那么我们怎么才能让它用于单体架构呢?其实很简单,首先,需要几个第三方库,如下:
go get github.com/opentracing/opentracing-go
go get github.com/uber/jaeger-client-go
go get github.com/uber/jaeger-client-go/config
然后是屡清思路。
1、要使用jaeger就要安装,可以通过docker将其安装在服务器上。
docker pull cap1573/jaeger
docker run -d --name jaeger -p 6831:6831/udp -p 16686:16686 cap1573/jaeger
2、需要配置文件新增配置项,写上服务名称和jaeger的服务ip地址和端口
3、需要编写初始化jaeger的代码
4、需要编写
StartSpan和GetParentSpan函数
5、需要编写一个jaeger中间件
6、将jaeger中间件注册到gin中,然后启动服务
go run main.go
7、随便访问一个api,例如我访问视频流接口
这时候打开jaeger的ui界面,访问后可以看到我们刚刚的请求,可以清楚的看见这个请求耗时是多久。
好了,经过以上步骤就完成了在gin+gorm的单体架构中使用jaeger进行链路追踪。
如果在使用的时候jaeger的ui界面访问不了,仔细检查你的jaeger部署了没有,或者检查你访问的地址对不对,如ui界面能进入,但是服务名称找不到,仔细检查上述步骤,如果有服务名称,但是没有请求接口的记录,看看你是点击了下面的查找按钮。