Service Mesh Istio 从入门到放弃 (四) istio 运维可观测性
Kiali 基于网格的管理控制台Kiali是一个基于服务网格的istio管理控制台,它提供了一些列的仪表盘和可观测能力,同时可以让你去操作网格的配置可以展示整个网格的网络拓扑和服务的健康状态提供了grafana的访问整合了jaeger的分布式追踪istio 安装包含了kiali,由于我的整套集群部署在本地虚拟机,只能通过nodePort 方式提供对外访问的能力,所以想访问kiali的控制台页面之前
·
Kiali 基于网格的管理控制台
- Kiali是一个基于服务网格的istio管理控制台,它提供了一些列的仪表盘和可观测能力,同时可以让你去操作网格的配置
- 可以展示整个网格的网络拓扑和服务的健康状态
- 提供了grafana的访问
- 整合了jaeger的分布式追踪
istio 安装包含了kiali,由于我的整套集群部署在本地虚拟机,只能通过nodePort 方式提供对外访问的能力,所以想访问kiali的控制台页面之前需要修改下它的service的配置,将默认的spec.type:ClusterIp 改为NodePort,
kubectl edit svc kiali -n istio-system
root@kube1:~# kubectl get svc kiali -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kiali NodePort 10.100.234.10 <none> 20001:32698/TCP 5d23h
配置生效后看到serice分配的nodeport端口是32698,这样通过nodeIp:32698 就可以访问kiali的控制台页面了
- 概览页面可以看到整个mesh 集群每个namespace服务整体的状态信息
- 图页面也可以看到选定namespace下所有服务的网络拓扑结构,图中可以看到demo应用的结构我们之前介绍的是一致的
- 配置页面可以看到istio 资源对象的配置列表,具体点击某一条信息,可以配置某一个对象的yaml配置
Prometheus 指标收集
- Prometheus 主要用来做指标收集方便后续展示系统或者服务的时间序列上连续的监控状态
通过对service 修改,使用nodeport的方式提供对外访问
kubectl edit svc prometheus -n istio-system
- 这里可以通过他自有的查询语言promql查找对应的收集的各种指标数据
- 通过输入istio 会自动提示相关的监控指标
Grafana 系统监控& 指标可视化
- 他是一个指标数据展示的平台,一般都是和prometheus联合使用
- istio默认已经安装了它,访问之前也需要修改service的访问方式
kubectl edit svc grafana -n istio-system
首页提供了istio的八种dashboard,前三种是基于服务应用层面的各种指标展示,后5种是基于底层服务部署层面的指标
- 在查看各种监控之前,我们先进行几次页面刷新产生访问数据
- istio 整体的应用服务指标展示
- 基于底层数据的展示
Envoy日志访问
- istio中使用envoy作为一个高效的网络代理服务器来管理整个pod上的流量,所以对应的网络日志需要访问envoy对应的容器来查看,容器的名字是istio-proxy,它也是整个pod的sidecar
- 首先要确保整个集群日志功能是打开的,执行如下命令保证日志功能开启
istioctl install --set profile=demo --set meshConfig.accessLogFile="/dev/stdout"
//查看执行后的服务配置是否生效 accessLogFile 有值代表日志开启
root@kube1:~# kubectl describe cm istio -n istio-system | grep accessLogFile
{"apiVersion":"v1","data":{"mesh":"# Set enableTracing to false to disable request tracing.\nenableTracing: true\n\n# Set accessLogFile to...
# Set accessLogFile to empty string to disable access log.
accessLogFile: "/dev/stdout"
然后执行如下命令就可以通过标签筛选(-l app=reviews)来查看多个服务实例的log
kubectl logs -l app=productpage -c istio-proxy
[2020-09-09T08:50:41.851Z] "GET /details/0 HTTP/1.1" 200 - "-" "-" 0 178 4 4 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15" "bc0d8c89-ce3a-996c-b332-c3553f9b6036" "details:9080" "10.244.1.41:9080" outbound|9080|v1|details.default.svc.cluster.local 10.244.0.32:54150 10.110.144.165:9080 10.244.0.32:46342 - -
[2020-09-09T08:50:41.863Z] "GET /reviews/0 HTTP/1.1" 200 - "-" "-" 0 295 6 6 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15" "bc0d8c89-ce3a-996c-b332-c3553f9b6036" "reviews:9080" "10.244.1.38:9080" outbound|9080|v1|reviews.default.svc.cluster.local 10.244.0.32:51664 10.106.162.155:9080 10.244.0.32:46854 - -
[2020-09-09T08:50:41.838Z] "GET /productpage HTTP/1.1" 200 - "-" "-" 0 4183 34 33 "10.244.1.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15" "bc0d8c89-ce3a-996c-b332-c3553f9b6036" "10.25.155.1:30890" "127.0.0.1:9080" inbound|9080|http|productpage.default.svc.cluster.local 127.0.0.1:47824 10.244.0.32:9080 10.244.1.1:0 outbound_.9080_._.productpage.default.svc.cluster.local default
主要日志配置
- accessLogFile 制定是否开启日志
- accessLogFormat 日志显示的字段 空为默认配置
- accessLogEncoding 日志的编码格式 JSON/ TEXT
分布式追踪 Jeager
- Jeager 是开源的端到端分布式追踪系统
- 它能针对微服务错综复杂的服务调用进行错误排查和监控
由于我们是通过demo的方式安装的,所以默认安装了jeager,通过修改为node port 就可以访问ui页面了
kubectl edit svc jaeger-query -n istio-system
首页就可以选择不同的服务来查看调用情况,具体点看某一个请求调用,就可以看到具体的调用链路信息
目前还支持图形的方式来查看调用链路
更多推荐
已为社区贡献2条内容
所有评论(0)