本文使用istio版本:1.4.2
開啓鏈路監控
....
#
# addon jaeger tracing configuration
#
tracing:
enabled: true
....
可以看出。istio鏈路監控集成使用的是Jaeger,Jaeger是什麼,參考這篇。
查看是否啓動成功
[root@k8s-master istio-1.4.2]# kubectl get po -n istio-system --show-labels | grep jaeger
istio-tracing-795c9c64c4-224wm 1/1 Running 0 47h app=jaeger,chart=tracing,heritage=Tiller,pod-template-hash=795c9c64c4,release=istio
訪問jaeger UI
[root@k8s-master istio-1.4.2]# kubectl get svc -n istio-system | grep jaeger
jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 47h
jaeger-collector ClusterIP 10.110.206.207 <none> 14267/TCP,14268/TCP,14250/TCP 47h
jaeger-query NodePort 10.101.53.38 <none> 16686:31944/TCP
如上所示,默認情況下,jaeger-query類型也是ClusterIP,爲了便於訪問,直接修改成NodePort類型,
kubectl edit svc jaeger-query -n istio-system
然後訪問IP:31944即可。
UI預覽
採集頻率控制
如果所有的請求都採集監控,不管出於性能考慮還是資源考慮,都是不實際的。
pilot組件中PILOT_TRACE_SAMPLING環境變量用於控制採集率,默認爲1(0~100),測試的時候可以改大點便於分析:
kubectl -n istio-system get deploy istio-pilot -oyaml | grep PILOT_TRACE_SAMPLING -A5
--
- name: PILOT_TRACE_SAMPLING
value: "1"
- name: PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_OUTBOUND
value: "true"
- name: PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_INBOUND
value: "false"
---
也可以在安裝前,設置 pilot.traceSampling,默認爲1.配置文件目錄:install\kubernetes\helm\istio\charts\pilot。
監控數據採集存儲
參考控制檯kiali配置,其中配置了Prometheus和grafana。參考 Istio鏈路監控和監控可視化
- prometheus作爲基礎數據採集和存儲方式,可以通過PromQL查詢指標。
- grafana可定製化報表展示。