本文使用的istio版本:
1.4.2
开启链路监控
....
#
# addon jaeger tracing configuration
#
tracing:
enabled: true
....
可以看出。istio
链路监控集成使用的是Jaeger
,Jaeger
是什么,参考开发分布式追踪OpenTracing与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"
---
监控数据采集存储
参考控制台kiali配置,其中配置了Prometheus
和grafana
。参考Istio链路监控和监控可视化
prometheus
作为基础数据采集和存储方式,可以通过PromQL
查询指标。grafana
可定制化报表展示。