istio kiali jaeger 关联

一、jaeger 介绍

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

 

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

 

  1. 分布式上下文传播

  2. 分布式事务监控

  3. Root 原因分析

  4. 服务依赖性分析

  5. 性能/延迟优化

 

 

 

二、jaeger 安装

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

[root@k8s-master k8s]# kubectl get svc -n istio-system
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                      AGE
grafana                ClusterIP   10.1.5.34      <none>        3000/TCP                                                                     6h54m
istio-egressgateway    ClusterIP   10.1.247.154   <none>        80/TCP,443/TCP,15443/TCP                                                     6h55m
istio-ingressgateway   NodePort    10.1.117.117   <none>        15021:32064/TCP,80:32223/TCP,443:32254/TCP,31400:30364/TCP,15443:30581/TCP   6h55m
istiod                 ClusterIP   10.1.76.150    <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                        6h56m
jaeger-collector       ClusterIP   10.1.74.203    <none>        14268/TCP,14250/TCP                                                          23m
kiali                  NodePort    10.1.4.30      <none>        20001:31461/TCP,9090:32540/TCP                                               6h54m
prometheus             ClusterIP   10.1.198.172   <none>        9090/TCP                                                                     6h54m
tracing                ClusterIP    10.1.122.6     <none>        80:/TCP                                                                 23m
zipkin                 ClusterIP   10.1.171.167   <none>        9411/TCP                                                                     23m

注意:在istio老版本叫jaeger-query,新版本叫tracing

 

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

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

查看svc端口

[root@k8s-master k8s]# kubectl get svc -n istio-system|grep tracing
tracing                NodePort    10.1.122.6     <none>        80:31137/TCP                                                                 26m

可以看到暴露的端口为:31137

 

使用浏览器访问:

http://192.168.31.236:31137/jaeger/

注意:192.168.31.236是k8s-master地址

效果如下:

istio kiali jaeger 关联

 

 

 

三、kiali 关联 jaeger

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

istio kiali jaeger 关联

 

 

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

注意:默认是没有的,我是关联之后才有的,莫慌。

 

设置 kiali jaeger 外部链接地址

编辑 kiali configmap:

kubectl edit configmap -n istio-system kiali

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

    external_services:
      custom_dashboards:
        enabled: true
      tracing:
        url: http://192.168.31.236:31137/jaeger
        in_cluster_url: http://tracing/jaeger

 

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

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

 

执行完后,再次查看 kiali pod

[root@k8s-master k8s]# kubectl get pods -n istio-system|grep kiali
kiali-667b888c56-nt27g                  1/1     Running   0          15m

 

查看发现 url 值已经生效:

[root@k8s-master k8s]# kubectl -n istio-system exec -it kiali-667b888c56-nt27g -- cat /kiali-configuration/config.yaml
auth:
  openid: {}
  openshift:
    client_id_prefix: kiali
  strategy: anonymous
...
external_services:
  custom_dashboards:
    enabled: true
  tracing:
    url: http://192.168.31.236:31137/jaeger
    in_cluster_url: http://tracing/jaeger

 

再次刷新访问 kiali,就会在左侧栏出现Distributed Tracing,点击它,就会打开jaeger,效果同上!

 

四、kiali jaeger 流量关联

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

while true; do sleep 1;curl http://192.168.31.16:32223/productpage; done

访问 kiali 的 service 菜单标签:

istio kiali jaeger 关联

 

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

istio kiali jaeger 关联

 

 

 点击View in Tracing,效果如下:

istio kiali jaeger 关联

 

 

点击下面的istio-ingressgateway: productpage.default.svc.cluster.local:9080/productpage

istio kiali jaeger 关联

 

 

效果如下:

istio kiali jaeger 关联

 

 

 

本文参考链接:

https://blog.51cto.com/14268033/2488805

 

上一篇:Jquery Datepicker 日期禁用


下一篇:我所理解的DirectX Ray Tracing