面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)

Istio服务网格的可视化监控系统 文章目录

  • Istio服务网格的可视化监控系统
    • 1.Istio服务网格的可视化系统
    • 2.在K8S集群中部署Istio自带的可视化系统
      • 2.1.将Kiali服务的CRD资源单独分离
      • 2.2.调整资源编排文件使用NodePort的方式
      • 2.3.创建所有资源控制器
    • 3.Kiali可视化系统简单使用
      • 3.1.Kiali仪表盘概览
      • 3.2.浏览微服务的架构图
      • 3.3.查看某个命名空间下的程序列表
      • 3.4.查看某个命名空间下的工作负载
      • 3.5.查看某个命名空间下的Service资源
      • 3.6.修改某个资源的编排文件
    • 4.通过Prometheus查看Itsio的监控视图
      • 4.1.在Grafana中查看Istio的监控视图
      • 4.2.查看微服务的流量监控仪表盘
      • 4.3.查看微服务的资源利用率
      • 4.4.查看Istio中各个应用程序的展示大屏
    • 5.使用Jaeger查看微服务之间的链路监控
      • 5.1.观察微服务的链路状态
1.Istio服务网格的可视化系统 Istio自带了三套可视化监控系统,分别是Kiali、Prometheus+Grafana、Jaeger。
Kiali:在Kiali中可以浏览网格中部署的应用程序,包括微服务调用架构、流量监控图,还可以通过图形化界面修改Istio资源的编排文件。
Prometheus+Grafana:由Prometheus采集监控数据,Grafana将监控数据展示成仪表盘。
Jaeger:链路监控工具,可以追踪微服务调用之间的链路状态。
2.在K8S集群中部署Istio自带的可视化系统 2.1.将Kiali服务的CRD资源单独分离
如果不单独从kiali.yaml文件中拿出来的话,会影响kiali服务的创建。
1.进入编排文件所在的路径 [root@k8s-master ~]# cd istio-1.8.2/samples/addons/ [root@k8s-master addons]# ll 总用量 304 drwxr-xr-x 2 root root57 1月13 2021 extras -rw-r--r-- 1 root root 240054 1月13 2021 grafana.yaml -rw-r--r-- 1 root root2317 1月13 2021 jaeger.yaml -rw-r--r-- 1 root root397 2月22 14:09 kiali-crb.yaml -rw-r--r-- 1 root root35097 2月22 15:13 kiali.yaml -rw-r--r-- 1 root root13250 1月13 2021 prometheus.yaml -rw-r--r-- 1 root root5186 1月13 2021 README.md2.将kiali资源编排文件中的crb资源放到单独的文件中 #如果不单独拿出来会影响创建,直接从kiali.yaml中粘贴出来即可 [root@k8s-master addons]# cat kiali-crd.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: monitoringdashboards.monitoring.kiali.io spec: group: monitoring.kiali.io names: kind: MonitoringDashboard listKind: MonitoringDashboardList plural: monitoringdashboards singular: monitoringdashboard scope: Namespaced versions: - name: v1alpha1 served: true storage: true

2.2.调整资源编排文件使用NodePort的方式
调整kiali、prometheus、jaeger的service资源编排文件,使用nodeport的方式映射服务。
1.kiali服务 [root@k8s-master addons]# vim kiali.yaml apiVersion: v1 kind: Service metadata: name: kiali ··· selector: app.kubernetes.io/name: kiali app.kubernetes.io/instance: kiali-server type: NodePort#在357行增加此参数2.prometheus服务 [root@k8s-master addons]# vim prometheus.yaml type: NodePort#在377行修改3.grafana服务 [root@k8s-master addons]# vim grafana.yaml type: NodePort#94行增加4.jaeger服务 [root@k8s-master addons]# vim jaeger.yaml apiVersion: v1 kind: Service metadata: name: tracing namespace: istio-system labels: app: jaeger spec: ports: - name: http-query port: 80 protocol: TCP targetPort: 16686 selector: app: jaeger type: NodePort#72行

2.3.创建所有资源控制器
1.先创建crd字资源 [root@k8s-master addons]# kubectl apply -f kiali-crd.yaml -n istio-system customresourcedefinition.apiextensions.k8s.io/monitoringdashboards.monitoring.kiali.io created2.然后再创建其他资源控制器 [root@k8s-master addons]# kubectl apply -f . -n istio-system serviceaccount/grafana created configmap/grafana created service/grafana created deployment.apps/grafana created configmap/istio-grafana-dashboards created configmap/istio-services-grafana-dashboards created deployment.apps/jaeger created service/tracing created service/zipkin created service/jaeger-collector created customresourcedefinition.apiextensions.k8s.io/monitoringdashboards.monitoring.kiali.io unchanged customresourcedefinition.apiextensions.k8s.io/monitoringdashboards.monitoring.kiali.io unchanged serviceaccount/kiali created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io/kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created service/kiali created deployment.apps/kiali created monitoringdashboard.monitoring.kiali.io/envoy created monitoringdashboard.monitoring.kiali.io/go created monitoringdashboard.monitoring.kiali.io/kiali created monitoringdashboard.monitoring.kiali.io/micrometer-1.0.6-jvm-pool created monitoringdashboard.monitoring.kiali.io/micrometer-1.0.6-jvm created monitoringdashboard.monitoring.kiali.io/micrometer-1.1-jvm created monitoringdashboard.monitoring.kiali.io/microprofile-1.1 created monitoringdashboard.monitoring.kiali.io/microprofile-x.y created monitoringdashboard.monitoring.kiali.io/nodejs created monitoringdashboard.monitoring.kiali.io/quarkus created monitoringdashboard.monitoring.kiali.io/springboot-jvm-pool created monitoringdashboard.monitoring.kiali.io/springboot-jvm created monitoringdashboard.monitoring.kiali.io/springboot-tomcat created monitoringdashboard.monitoring.kiali.io/thorntail created monitoringdashboard.monitoring.kiali.io/tomcat created monitoringdashboard.monitoring.kiali.io/vertx-client created monitoringdashboard.monitoring.kiali.io/vertx-eventbus created monitoringdashboard.monitoring.kiali.io/vertx-jvm created monitoringdashboard.monitoring.kiali.io/vertx-pool created monitoringdashboard.monitoring.kiali.io/vertx-server created serviceaccount/prometheus created configmap/prometheus created clusterrole.rbac.authorization.k8s.io/prometheus created clusterrolebinding.rbac.authorization.k8s.io/prometheus created service/prometheus created deployment.apps/prometheus created3.查看创建的资源 [root@k8s-master addons]# kubectl get pod,svc -n istio-system NAMEREADYSTATUSRESTARTSAGE pod/grafana-784c89f4cf-dnjlj1/1Running082s pod/istio-ingressgateway-559f565fcd-jxn5b1/1Running111d pod/istiod-545bb98448-vqf841/1Running011d pod/jaeger-7f78b6fb65-89gwt1/1Running081s pod/kiali-7476977cf9-mrw2g1/1Running079s pod/prometheus-7bfddb8dbf-jp7qr2/2Running076sNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE service/grafanaNodePort10.96.240.1493000:30142/TCP94m service/istio-ingressgatewayLoadBalancer10.107.107.20615021:32381/TCP,80:31105/TCP,443:30793/TCP,15012:32259/TCP,15443:31377/TCP11d service/istiodClusterIP10.109.130.25215010/TCP,15012/TCP,443/TCP,15014/TCP11d service/jaeger-collectorClusterIP10.106.34.19214268/TCP,14250/TCP94m service/kialiNodePort10.101.98.19920001:30547/TCP,9090:32333/TCP94m service/prometheusNodePort10.107.48.959090:32085/TCP94m service/tracingNodePort10.106.52.22980:30821/TCP94m service/zipkinClusterIP10.99.241.799411/TCP94m

3.Kiali可视化系统简单使用 浏览器访问任意集群节点的地址+kiali服务200001端口映射的NodePort端口:http://192.168.20.10:30547/
无需账号密码即可登陆,但是不安全。
3.1.Kiali仪表盘概览
点击左侧的Overview即可跳转到kiali的仪表盘页面,在这里可以看到K8S集群中所有的Namespace列表。
如果出现了警告或者错误的提示,就表示命名空间下某个程序的资源编排文件写的有问题,根据提示按钮进入YAML的编辑页面,会显示出那些YAML有问题,删除或者修改即可。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3.2.浏览微服务的架构图
kiali还支持观察微服务程序的架构图,包括程序访问的架构图、service资源的架构图、多版本类型的架构图、工作负载的架构图。
点击Graph进入图形浏览页面—>选择微服务所在的命名空间---->选择要查看的信息可以全部勾选—>选择查看的图形类型。
1)用户访问微服务程序的架构图
图形类型选择App graph,可以清晰的看到从istio的ingressgateway到具体微服务的架构图,请求首先达到productpage然后由productpage调用details微服务,再调用reviews微服务,reviews微服务会调用ratings微服务。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

2)Service资源的架构图
kiali支持显示微服务程序Service资源调用关系的架构图,图形类型选择Service graph。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3)微服务程序多版本的架构图
kiali支持显示微服务程序多个版本的架构图,图形类型选择Versioned app graph。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

4)微服务程序工作负载的架构图
kiali可以展示各个微服务使用的deployment工作负载资源的架构图,类型选择Workload graph。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3.3.查看某个命名空间下的程序列表
1)点击左侧的Applications,选择命名空间。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

2)点击名称可跳转至详情页面。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3.4.查看某个命名空间下的工作负载
1)点击左侧的Workloads,选择命名空间,即可显示这个命名空间下的所有Deployment控制器资源。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

2)点击名称即可跳转到详情页面,也可以看到Deployment资源关联的Pod资源。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3)点击logs还可以观察某个Pod的日志。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

4)在Inbound Metrics页面可以观察程序的流量监控图。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3.5.查看某个命名空间下的Service资源
1)点击左侧的Services,然后选择命名空间。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

2)点击名称可以跳转至详情页面,并且可以看到Service资源关联的Deployment资源。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

3.6.修改某个资源的编排文件
Istio的流量管理需要通过配置VirtualService资源才可以实现,kiali可视化平台支持修改Istio各种资源的编排文件,保存后立即生效,方便我们修改各个资源的编排文件。
1)点击左侧的Istio Config,选择资源所在的Namespace,然后选择要修改的资源类型,选择后会匹配出符合类的资源。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

2)点击资源的名称会跳转至编辑页面,修改完成后点击保存即可。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

4.通过Prometheus查看Itsio的监控视图 浏览器访问:http://192.168.20.10:30142/
4.1.在Grafana中查看Istio的监控视图
Grafana中集成了很多Istio的监控视图,方便我们浏览监控数据
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

Istio Control Plane Dashboard:控制面板仪表盘
Istio Mesh Dashboard:网格仪表盘,查看应用(服务)数据
Istio Performance Dashboard:查看Istio 自身(各组件)数据
Istio Service Dashboard:服务仪表盘
Istio Workload Dashboard:工作负载仪表盘
Istio Wasm Extension Dashboard
其中最主要的就是Istio Mesh Dashboard这张监控视图,这张图中包含了微服务的流量监控图
4.2.查看微服务的流量监控仪表盘
点击Istio Mesh Dashboard仪表盘,可以看到不同微服务程序的流量监控视图。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

4.3.查看微服务的资源利用率
Istio Control Plane Dashboard仪表盘的主要展示资源利用率以及代理程序的连接信息监控图。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

4.4.查看Istio中各个应用程序的展示大屏
Istio Service Dashboard这张监控图可以展示出各个程序Service资源的详细信息。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

Istio Workload Dashboard这张图可以展示出Deployment资源的详细视图。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

5.使用Jaeger查看微服务之间的链路监控 Jaeger是Uber开源的分布式追踪系统,用于微服务的监控和全链路追踪。
浏览器访问:http://192.168.20.10:30821/jaeger/search
5.1.观察微服务的链路状态
在Service中选择要链路跟踪的服务,这里我们选择istio-ingressgateway,然后点击Find Traces开始链路跟踪,在右侧会显示出该服务下有哪些程序有链路跟踪信息。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

点击某个服务即可跳转到链路跟踪页面,点击流量条可以展开显示详细信息。
面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)
文章图片

【面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)】先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

    推荐阅读