云世 公众号
今天要和你分享的内容是:在 Istio 中如何利用 Metrics、Trace、Log 等组件做到服务的可观测性。在前面的章节中,已经介绍过可观测性中的 Metrics 和 Trace 的相关原理,这一讲就不再重复了,下面我们分别学习如何在 Istio 中实现 Metrics、Trace 以及 Log。
我们先从 Metrics 开始学习。
Metrics 指标
在开始这部分内容之前,先通过命令确认你是否安装了 Prometheus 和 Grafana:
$ kubectl -n istio-system get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 10.108.76.68 <none> 3000/TCP 92m
istio-egressgateway ClusterIP 10.103.64.246 <none> 80/TCP,443/TCP,15443/TCP 26h
istio-ingressgateway LoadBalancer 10.108.98.172 127.0.0.1 15021:31530/TCP,80:31636/TCP,443:31905/TCP,31400:31942/TCP,15443:32337/TCP 26h
istiod ClusterIP 10.109.14.171 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP 26h
kiali ClusterIP 10.110.51.251 <none> 20001/TCP,9090/TCP 92m
prometheus ClusterIP 10.106.46.62 <none> 9090/TCP 92m
tracing ClusterIP 10.100.200.122 <none> 80/TCP 92m
zipkin ClusterIP 10.100.85.63 <none> 9411/TCP
【了解更多DDD系列课程,搜索 云世 公众号获取】
如果你学习了前面的内容,应该发现 Prometheus 和 Grafana 是安装过的,如果没有安装,请参考第 14 讲的可观测性部署部分,重新安装。
Prometheus
我们先来启动 Prometheus 的图形界面:
istioctl dashboard prometheus
2,这个命令会帮我们打开 Prometheus 的 Web 界面,如下图:
3,让我们尝试输入一些 Envoy 突出的 Metrics,在 Prometheus 中查询:
istio_requests_total{connection_security_policy!="mutual_tls", destination_service=~"reviews.default.svc.cluster.local", reporter="source"}[5m]
4,切换到 Console 界面,可以查看一些输出信息,说明信息被正确采集:
至此,Prometheus 的数据采集验证工作就完成了,你可以看到 Prometheus 自带的 Web UI 比较简陋,所以我们需要引入第三方的图形化展示工具,也就是上面提到的 Grafana,下面我们学习在 Istio 中如何使用 Grafana 更好地展示 Prometheus 采集的数据指标。
Grafana
1,Grafna 的启动方式也很简单,和 Prometheus 类似:
$ istioctl dashboard grafana
2,Istio 也为我们自动地在本地打开了 Grafana 的界面,如下图:
这里我们需要手动在浏览器输入http://localhost:3000/dashboard/db/Istio-mesh-dashboard 并访问,可以直接看到 Istio 管理的服