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

在这里插入图片描述
首页就可以选择不同的服务来查看调用情况,具体点看某一个请求调用,就可以看到具体的调用链路信息
在这里插入图片描述
目前还支持图形的方式来查看调用链路
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐