总目录索引:istio从入门到放弃系列
1、jaeger 介绍
jaeger 官网:https://www.jaegertracing.io/
jaeger 是 Uber 开源的分布式跟踪系统,用于微服务的监控和全链路跟踪,其设计思想来自于 Dapper 和 zipkin。jaeger 特征包括:
分布式事务监控
Root 原因分析
服务依赖性分析
性能/延迟优化
2、jaeger 安装
如果你使用 istioctl profile demo 安装 istio 的话,jaeger 默认就是安装好的
为了可以将 jaeger 暴露在 k8s 集群外访问,需要将 jaeger-query 的 ClusterIP 服务类型更改为 NodePort。执行语句如下
kubectl patch svc -n istio-system jaeger-query -p '{"spec":{"type": "NodePort"}}'
3、kiali 关联 jaeger
kiali 是可视化服务网格组件,截图如下:
4、设置 kiali jaeger 外部链接地址
编辑 kiali configmap:
kubectl edit configmap -n istio-system kiali
在 external_services.tracing.url 内容下添加 jaeger 外部链接,链接地址就是 istio-system 命名空间下 jaeger-query 服务的宿主机地址和 nodeport
编辑 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
再次访问 kiali,发现 Distributed Tracing 链接可以访问,并且可以打开 jaeger 页面,如下图所示:
5、kiali jaeger 流量关联
while true; do curl http://10.43.16.187/productpage; done #IP是istio-ingressgateway的Cluster IP
访问 kiali 的 service 菜单标签:
双击 productpage 进入微服务,然后选择标签页 Traces,再点击蓝色圆圈(trace 点)后会显示该 tracing 的路径信息,然后再选择链接(View Trace in Tracing):
点击后的 jaeger 截图如下: