总目录索引:istio从入门到放弃系列

1、jaeger 介绍

jaeger 官网:https://www.jaegertracing.io/

jaeger 是 Uber 开源的分布式跟踪系统,用于微服务的监控和全链路跟踪,其设计思想来自于 Dapper 和 zipkin。jaeger 特征包括:

  1. 分布式上下文传播

  2. 分布式事务监控

  3. Root 原因分析

  4. 服务依赖性分析

  5. 性能/延迟优化

2、jaeger 安装

如果你使用 istioctl profile demo 安装 istio 的话,jaeger 默认就是安装好的

istio kiali jaeger 关联_istio  jaeger

为了可以将 jaeger 暴露在 k8s 集群外访问,需要将 jaeger-query 的 ClusterIP 服务类型更改为 NodePort。执行语句如下

kubectl patch svc -n istio-system jaeger-query -p '{"spec":{"type": "NodePort"}}'

3、kiali 关联 jaeger

   kiali 是可视化服务网格组件,截图如下:

istio kiali jaeger 关联_kiali jaeger_02

点击上面箭头 Distributed Tracing 链接可以打开 jaeger。如果访问不到,说明你本地的浏览器并不能直接访问到 kiali 设置的 jaeger 外部链接。

4、设置 kiali jaeger 外部链接地址

   编辑 kiali configmap:

kubectl edit configmap -n istio-system kiali

在 external_services.tracing.url 内容下添加 jaeger 外部链接,链接地址就是 istio-system 命名空间下 jaeger-query 服务的宿主机地址和 nodeport

istio kiali jaeger 关联_jaeger_03

编辑 kiali configmap 后,需要删除并重新生成 kiali pod,好让配置挂载生效,执行语句如下:

kubectl delete pod -n istio-system $(kubectl get pod -n istio-system | grep -i kiali | awk '{print $1}')

执行完后,再次查看 kiali pod,发现 url 值已经生效:

kubectl exec -it -n istio-system kiali-57fb5bb5c6-rvqcm -- cat /kiali-configuration/config.yaml

istio kiali jaeger 关联_istio  jaeger_04

再次访问 kiali,发现 Distributed Tracing 链接可以访问,并且可以打开 jaeger 页面,如下图所示:

istio kiali jaeger 关联_kiali jaeger_05

5、kiali jaeger 流量关联

以上的操作中通过 kiali 可以打开 jaeger 了,还可以通过实际流量将 kiali 和 jaeger 关联起来,首先打入一些流量,这里采用的是 istio 的官方用例 bookinfo:

while true; do curl http://10.43.16.187/productpage; done      #IP是istio-ingressgateway的Cluster IP

访问 kiali 的 service 菜单标签:

istio kiali jaeger 关联_kiali jaeger_06

双击 productpage 进入微服务,然后选择标签页 Traces,再点击蓝色圆圈(trace 点)后会显示该 tracing 的路径信息,然后再选择链接(View Trace in Tracing):

istio kiali jaeger 关联_kiali jaeger_07

点击后的 jaeger 截图如下:

istio kiali jaeger 关联_istio  jaeger_08