總目錄索引: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 截圖如下: