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.观察微服务的链路状态
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有问题,删除或者修改即可。
文章图片
3.2.浏览微服务的架构图
kiali还支持观察微服务程序的架构图,包括程序访问的架构图、service资源的架构图、多版本类型的架构图、工作负载的架构图。
点击Graph进入图形浏览页面—>选择微服务所在的命名空间---->选择要查看的信息可以全部勾选—>选择查看的图形类型。
1)用户访问微服务程序的架构图
图形类型选择App graph,可以清晰的看到从istio的ingressgateway到具体微服务的架构图,请求首先达到productpage然后由productpage调用details微服务,再调用reviews微服务,reviews微服务会调用ratings微服务。
文章图片
2)Service资源的架构图
kiali支持显示微服务程序Service资源调用关系的架构图,图形类型选择Service graph。
文章图片
3)微服务程序多版本的架构图
kiali支持显示微服务程序多个版本的架构图,图形类型选择Versioned app graph。
文章图片
4)微服务程序工作负载的架构图
kiali可以展示各个微服务使用的deployment工作负载资源的架构图,类型选择Workload graph。
文章图片
3.3.查看某个命名空间下的程序列表
1)点击左侧的Applications,选择命名空间。
文章图片
2)点击名称可跳转至详情页面。
文章图片
3.4.查看某个命名空间下的工作负载
1)点击左侧的Workloads,选择命名空间,即可显示这个命名空间下的所有Deployment控制器资源。
文章图片
2)点击名称即可跳转到详情页面,也可以看到Deployment资源关联的Pod资源。
文章图片
3)点击logs还可以观察某个Pod的日志。
文章图片
4)在Inbound Metrics页面可以观察程序的流量监控图。
文章图片
3.5.查看某个命名空间下的Service资源
1)点击左侧的Services,然后选择命名空间。
文章图片
2)点击名称可以跳转至详情页面,并且可以看到Service资源关联的Deployment资源。
文章图片
3.6.修改某个资源的编排文件
Istio的流量管理需要通过配置VirtualService资源才可以实现,kiali可视化平台支持修改Istio各种资源的编排文件,保存后立即生效,方便我们修改各个资源的编排文件。
1)点击左侧的Istio Config,选择资源所在的Namespace,然后选择要修改的资源类型,选择后会匹配出符合类的资源。
文章图片
2)点击资源的名称会跳转至编辑页面,修改完成后点击保存即可。
文章图片
4.通过Prometheus查看Itsio的监控视图 浏览器访问:
http://192.168.20.10:30142/
4.1.在Grafana中查看Istio的监控视图
Grafana中集成了很多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仪表盘,可以看到不同微服务程序的流量监控视图。
文章图片
4.3.查看微服务的资源利用率
Istio Control Plane Dashboard仪表盘的主要展示资源利用率以及代理程序的连接信息监控图。
文章图片
4.4.查看Istio中各个应用程序的展示大屏
Istio Service Dashboard这张监控图可以展示出各个程序Service资源的详细信息。
文章图片
Istio Workload Dashboard这张图可以展示出Deployment资源的详细视图。
文章图片
5.使用Jaeger查看微服务之间的链路监控 Jaeger是Uber开源的分布式追踪系统,用于微服务的监控和全链路追踪。
浏览器访问:
http://192.168.20.10:30821/jaeger/search
5.1.观察微服务的链路状态
在Service中选择要链路跟踪的服务,这里我们选择istio-ingressgateway,然后点击Find Traces开始链路跟踪,在右侧会显示出该服务下有哪些程序有链路跟踪信息。
文章图片
点击某个服务即可跳转到链路跟踪页面,点击流量条可以展开显示详细信息。
文章图片
【面试|Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)】先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
推荐阅读
- 面试|12个MySQL慢查询的原因分析
- Golang|深入理解Golang之context
- 面试|学习笔记 Golang 写入文件(io.WriteString、ioutil.WriteFile、file.Write、write.WriteString)
- Android云音乐|3.Android高仿网易云音乐-首页复杂发现界面布局和功能
- 浅谈大数据背景下数据库安全保障体系
- | 如何把 thinkphp5 的项目迁移到阿里云函数计算来应对流量洪峰()
- 跨全端SDK技术演进
- Helm Chart 多环境、多集群交付实践,透视资源拓扑和差异
- 1374. 生成每种字符都是奇数个的字符串 : 简单构造模拟题