部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio

news/2024/11/1 17:34:39/

1. 模块简介

  • Prometheus 是一个开源的监控系统和时间序列数据库。Istio 使用 Prometheus 来记录指标,跟踪 Istio 和网格中的应用程序的健康状况。
  • Grafana 是一个用于分析和监控的开放平台。Grafana 可以连接到各种数据源,并使用图形、表格、热图等将数据可视化。通过强大的查询语言,你可以定制现有的仪表盘并创建更高级的可视化。通过 Grafana,我们可以监控 Istio 安装和服务网格中运行的应用程序的健康状况。
  • Zipkin 是一个分布式追踪系统。我们可以轻松地监控服务网格中发生的分布式事务,发现任何性能或延迟问题。为了让我们的服务参与分布式追踪,我们需要在进行任何下游服务调用时传播服务的 HTTP 头信息。尽管所有的请求都要经过 Istio sidecar,但 Istio 没有办法将出站请求与产生这些请求的入站请求联系起来。通过在应用程序中传播相关的头信息可以帮助 Zipkin 将这些跟踪信息拼接起来。
  • Kiali 是一个基于 Istio 的服务网格的管理控制台。它提供了仪表盘、可观察性,并让我们通过强大的配置和验证能力来操作网格。它通过推断流量拓扑来显示服务网格,并显示网格的健康状况。Kiali 提供了详细的指标,强大的验证,Grafana 访问,以及与 Jaeger 的分布式追踪的强大集成。

2. 部署Prometheus

2.1 安装Prometheus

prometheus_10">2.1.1 拉取prometheus镜像

安装 Prometheus,直接采用 Istio 安装包中 /samples/addons 文件夹中的prometheus.yaml进行安装

cd /opt/istio-1.17.8/samples/addons/
ls -hl

在这里插入图片描述
打开prometheus.yaml或者grep image prometheus.yaml查看到,安装prometheus需要用到两个镜像:jimmidyson/configmap-reload:v0.5.0和prom/prometheus:v2.34.0
在这里插入图片描述
提前将镜像拉取下来,加载到各个节点,或者确保每个节点都可以正常下载镜像

docker pull jimmidyson/configmap-reload:v0.5.0
docker pull prom/prometheus:v2.34.0
docker save jimmidyson/configmap-reload:v0.5.0 -o configmap-reload-v0.5.0.img
docker save prom/prometheus:v2.34.0 -o prometheus-v2.34.0.img
docker load < configmap-reload-v0.5.0.img
docker load < prometheus-v2.34.0.img

prometheus_28">2.1.2 安装prometheus

kubectl apply -f prometheus.yaml

在这里插入图片描述

prometheus_33">2.1.3 检查prometheus是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

prometheus_dashboard_42">2.1.4 启用prometheus dashboard

验证了通过使用 Istio CLI 中的 dashboard 命令,打开 Prometheus 仪表板存在问题,需要远程访问就不行了

istioctl dashboard prometheus

在这里插入图片描述
采用另一种方法,通过将prometheus这个service的类型从ClusterIP改成NodePort(type: NodePort)

kubectl get service -n istio-system -o wide
kubectl edit service prometheus -n istio-system
kubectl get service -n istio-system -o wide
kubectl get pods -o wide -A

在这里插入图片描述
通过上述命令输出可以得到prometheus ui地址,在浏览器中打开 http://172.19.0.243:31878/,进入 Prometheus 仪表盘,如下图所示:在这里插入图片描述

2.2 部署Nginx应用

2.2.1 编写nginx deploy文件

vim nginx.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: ngx-servicelabels:app: nginx
spec:type: NodePortselector:app: nginxports:- port: 80targetPort: 80nodePort: 32500

2.2.2 创建nginx应用

kubectl apply -f nginx.yaml

在这里插入图片描述

2.2.3 查看pod及svc服务

在这里插入图片描述

2.2.4 访问nginx

根据上面查看的信息,访问http://172.19.0.247:32500/
在这里插入图片描述

3. 部署Grafana

3.1 安装Grafana

grafana_113">3.1.1 拉取grafana镜像

安装 Grafana ,直接采用 Istio 安装包中 /samples/addons 文件夹中的grafana.yaml进行安装,确保在部署 Grafana 之前部署 Promeheus 插件,因为 Grafana 使用 Prometheus 作为其数据源。

cd /opt/istio-1.17.8/samples/addons/
ls -hl

在这里插入图片描述
打开grafana.yaml或者grep image grafana.yaml查看到,安装grafana需要用到的镜像:grafana/grafana:9.0.1

在这里插入图片描述

提前将镜像拉取下来,加载到各个节点,或者确保每个节点都可以正常下载镜像

docker pull grafana/grafana:9.0.1
docker save docker.io/grafana/grafana:9.0.1 -o grafana-9.0.1.img
docker load < grafana-9.0.1.img

grafana_131">3.1.2 安装grafana

kubectl apply -f grafana.yaml

在这里插入图片描述

grafana_137">3.1.3 检查grafana是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

grafana_dashboard_148">3.1.4 启用grafana dashboard

验证了通过使用 Istio CLI 中的 dashboard 命令,打开 grafana 仪表板存在问题,需要远程访问就不行了

istioctl dashboard grafana 

在这里插入图片描述

采用另一种方法,通过将grafana 这个service的类型从ClusterIP改成NodePort(type: NodePort)

kubectl get service -n istio-system -o wide
kubectl edit service grafana -n istio-system
kubectl get service -n istio-system -o wide
kubectl get pods -o wide -A

在这里插入图片描述

通过上述命令输出可以得到grafana ui地址,在浏览器中打开 http://172.19.0.247:31936,进入 grafana 仪表盘,如下图所示:
在这里插入图片描述
点击搜索框和 istio 文件夹,查看已安装的仪表盘,如下图所示:
在这里插入图片描述

3.2 Istio Grafana仪表盘

3.2.1 Istio 控制平面仪表盘(Istio Control Plane Dashboard)

从 Istio 控制平面仪表盘,我们可以监控 Istio 控制平面的健康和性能
在这里插入图片描述

Istio Control Plane Dashboard 仪表盘将向我们展示控制平面的资源使用情况(内存、CPU、磁盘、Go routines),以及关于 Pilot、Envoy 和 Webhook 的信息。

3.2.2 Istio 网格仪表盘(Istio Mesh Dashboard)

网格仪表盘为我们提供了在网格中运行的所有服务的概览。仪表盘包括全局请求量、成功率以及 4xx 和 5xx 响应的数量
在这里插入图片描述

3.2.3 Istio 性能仪表盘(Istio Performance Dashboard)

性能仪表盘向我们展示了 Istio 主要组件在稳定负载下的资源利用率

3.2.4 Istio 服务仪表盘(Istio Service Dashboard)

服务仪表盘允许我们在网格中查看服务的细节。

我们可以获得关于请求量、成功率、持续时间的信息,以及显示按来源和响应代码、持续时间和大小的传入请求的详细图表
在这里插入图片描述

3.2.5 Istio Wasm 扩展仪表盘(Istio Wasm Extension Dashboard)

Istio Wasm 扩展仪表盘显示与 WebAssembly 模块有关的指标。从这个仪表盘,我们可以监控活动的和创建的 Wasm 虚拟机,关于获取删除 Wasm 模块和代理资源使用的数据。
在这里插入图片描述

3.2.6 工作负载仪表盘(Istio Workload Dashboard)

这个仪表盘为我们提供了一个工作负载的详细指标分类
在这里插入图片描述

4. 部署Zipkin

4.1 安装Zipkin

4.1.1 拉取Zipkin 镜像

安装 Zipkin ,直接采用 Istio 安装包中 /samples/addons/extras文件夹中的zipkin.yaml进行安装。

cd /opt/istio-1.17.8/samples/addons/extras 
ls -hl

在这里插入图片描述

打开zipkin.yaml或者grep image zipkin.yaml查看到,安装zipkin需要用到的镜像:openzipkin/zipkin-slim:2.23.14
在这里插入图片描述

提前将镜像拉取下来,加载到各个节点,或者确保每个节点都可以正常下载镜像

docker pull openzipkin/zipkin-slim:2.23.14
docker save openzipkin/zipkin-slim:2.23.14  -o zipkin-slim-2.23.14.img
docker load < zipkin-slim-2.23.14.img

4.1.2 安装zipkin

kubectl apply -f zipkin.yaml

在这里插入图片描述

4.1.3 检查zipkin是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

4.1.4 启用zipkin dashboard

验证了通过使用 Istio CLI 中的 dashboard 命令,打开 zipkin仪表板存在问题,需要远程访问就不行了

istioctl dashboard zipkin

在这里插入图片描述

采用另一种方法,通过将zipkin这个service的类型从ClusterIP改成NodePort(type: NodePort)

kubectl get service -n istio-system -o wide
kubectl edit service zipkin -n istio-system
kubectl get service -n istio-system -o wide
kubectl get pods -o wide -A

在这里插入图片描述

通过上述命令输出可以得到zipkin ui地址,在浏览器中打开 http://172.19.0.243:31768,进入 zipkin仪表盘,如下图所示:
在这里插入图片描述

5. 部署Kiali

5.1 安装Kiali

5.1.1 拉取Kiali镜像

安装 Kiali,直接采用 Istio 安装包中 /samples/addons文件夹中的kiali.yaml进行安装。

cd /opt/istio-1.17.8/samples/addons/
ls -hl

在这里插入图片描述

打开kiali.yaml或者grep image kiali.yaml查看到,安装kiali需要用到的镜像:quay.io/kiali/kiali:v1.63
在这里插入图片描述

提前将镜像拉取下来,加载到各个节点,或者确保每个节点都可以正常下载镜像

docker pull quay.io/kiali/kiali:v1.63
docker save quay.io/kiali/kiali:v1.63  -o kiali-v1.63.img
docker load < kiali-v1.63.img

5.1.2 安装kiali

kubectl apply -f kiali.yaml

在这里插入图片描述

注意: 修改kiali.yaml中的imagePullPolicy策略,将Always修改为IfNotPresent,可采用离线的镜像

5.1.3 检查kiali是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

5.1.4 启用kiali dashboard

验证了通过使用 Istio CLI 中的 dashboard 命令,打开 zipkin仪表板存在问题,需要远程访问就不行了

istioctl dashboard kiali 

在这里插入图片描述

采用另一种方法,通过将zipkin这个service的类型从ClusterIP改成NodePort(type: NodePort)

kubectl get service -n istio-system -o wide
kubectl edit service kiali -n istio-system
kubectl get service -n istio-system -o wide
kubectl get pods -o wide -A

在这里插入图片描述

通过上述命令输出可以得到kiali ui地址,在浏览器中打开 http://172.19.0.247:30965,进入 zipkin仪表盘,如下图所示:
在这里插入图片描述
Kiali 可以生成一个像下图这样的服务图
在这里插入图片描述

该图向我们展示了服务的拓扑结构,并将服务的通信方式可视化。它还显示了入站和出站的指标,以及通过连接 Jaeger 和 Grafana(如果安装了)的追踪。图中的颜色代表服务网格的健康状况。红色或橙色的节点可能需要注意。组件之间的边的颜色代表这些组件之间的请求的健康状况。节点形状表示组件的类型,如服务、工作负载或应用程序。

节点和边的健康状况会根据用户的偏好自动刷新。该图也可以暂停以检查一个特定的状态,或回放以重新检查一个特定的时期。

Kiali 提供创建、更新和删除 Istio 配置的操作,由向导驱动。我们可以配置请求路由、故障注入、流量转移和请求超时,所有这些都来自用户界面。如果我们有任何现有的 Istio 配置已经部署,Kiali 可以验证它并报告任何警告或错误。

此文仅记录各模块的安装部署

6. 参考文献

https://www.cnblogs.com/zhangmingcheng/p/15700249.html
https://www.cnblogs.com/renshengdezheli/p/16836943.html
https://www.jiagou.com/post/43-istio-config/


http://www.ppmy.cn/news/1543643.html

相关文章

Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143388189 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Ground…

供应商图纸外发:如何做到既安全又高效?

供应商跟合作伙伴、客户之间会涉及到图纸外发的场景&#xff0c;这是一个涉及数据安全、效率及合规性的重要环节。供应商图纸发送流程一般如下&#xff1a; 1.申请与审批 采购人员根据需要提出发放图纸的申请并提交审批&#xff1b; 采购部负责人审批发放申请&#xff0c;确…

C语言用GNU源码编译建构系统工具(GNU BUILD SYSTEM)编译创建动态库

C语言用GNU源码编译建构系统工具&#xff08;GNU BUILD SYSTEM&#xff09;编译创建动态库 首先看一下这篇博文&#xff1a;C语言数据结构之顺序结构&#xff08;Sequence&#xff09;此次目的是将sequence.c改造一下&#xff0c;创建为一个动态链接库同时打包一个可发布的源码…

angular登录按钮输入框监听

说明&#xff1a;angular实现简单的登录页面&#xff0c;监听输入框的值&#xff0c;打印出来&#xff0c;按钮监听&#xff0c;打印数据 效果图: step1:E:\projectgood\ajnine\untitled4\src\app\app.config.ts import { ApplicationConfig, provideZoneChangeDetection } …

技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 1

虚拟风洞VWT 从2023版本开始&#xff0c;虚拟风洞VWT&#xff08;Virtual Wind Tunnel&#xff09;模块合并到HyperMesh CFD中。 用户在VWT模块中完成LBM求解器ultraFluidX的前处理设置&#xff0c;导出参数文件XML和模型文件STL&#xff0c;并在GPU服务器上提交计算。 VWT目前…

2024Selenium自动化常见问题!

"NoSuchElementException"异常&#xff1a; 确保使用了正确的选择器来定位元素。可以使用id、class、XPath或CSS选择器等。 可以尝试使用find_elements方法来查找元素列表&#xff0c;并检查列表的长度来判断元素是否存在。 使用显式等待&#xff08;WebDriverWait…

fetch: 取消请求、读取流、获取下载进度...

引言 Fetch API 提供了一个获取资源的接口(包括跨网络通信)。对于任何使用过 XMLHttpRequest 的开发者来说, 对于 Fetch 应该都能轻松上手, 而且新的 API 提供了更强大和灵活的功能集… 本文主要就是记录下, 在使用 Fetch 期间可能会碰到的几个小案例… 一、取消请求 在前端…

YOLOv6-4.0部分代码阅读笔记-loss_fuseab.py

loss_fuseab.py yolov6\models\losses\loss_fuseab.py ‌YOLOv6中的 loss_distill_ns 、 loss_distill 、 loss_fuseab 和 loss 的区别主要在于它们的应用场景、功能和目的。‌ ‌loss_distill_ns &#xff1a; ‌应用场景‌ &#xff1a;主要用于小模型&#xff0c;如YOLOv…