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

server/2024/11/27 21:41:02/

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/server/137767.html

相关文章

Nginx 的 Http 模块介绍(中)

1. preaccess 阶段 在 preaccess 阶段在 access 阶段之前&#xff0c;主要是限制用户的请求&#xff0c;比如并发连接数&#xff08;limit_conn模块&#xff09;和每秒请求数&#xff08;limit_req 模块&#xff09;等。这两个模块对于预防一些攻击请求是很有效的。 1.1 limi…

如何将MySQL彻底卸载干净

目录 背景&#xff1a; MySQL的卸载 步骤1&#xff1a;停止MySQL服务 步骤2&#xff1a;软件的卸载 步骤3&#xff1a;残余文件的清理 步骤4&#xff1a;清理注册表 步骤五:删除环境变量配置 总结&#xff1a; 背景&#xff1a; MySQL卸载不彻底往往会导致重新安装失败…

【自动化测试】APP UI 自动化(安卓)-本地环境搭建

一、软件准备及版本介绍 软件版本JAVA-SDK1.8.0_181 python 3.10.10 Android SDK Tools 下最新版本即可&#xff0c;无特殊要求 PyCharm 2023.3.5&#xff08;下最新版本即可&#xff0c;无特殊要求&#xff09; 二、安装步骤及环境变量配置 2.1 Java安装及配置 1&am…

利用Spring Boot框架打造信息学科平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

MySQL 和 PostgreSQL 的对比概述

MySQL 和 PostgreSQL 是两种广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们各自有其特点和优缺点。以下将从多个方面对它们进行详细比较。 1. 介绍 MySQL&#xff1a; MySQL 由瑞典公司 MySQL AB 开发&#xff0c;2008 年被 Sun Microsyst…

OnlyOffice 8.2 版本测评

引言 随着数字化办公的普及&#xff0c;各类文档协作工具如雨后春笋般涌现。OnlyOffice 作为一款开源且功能强大的协作平台&#xff0c;已吸引了众多用户的关注。近期推出的 OnlyOffice 8.2 版本带来了诸多更新和改进&#xff0c;旨在提升用户的文档处理体验。本文将对该版本进…

评价指标和目标函数的关系

评价指标和目标函数在优化和决策过程中扮演着重要的角色&#xff0c;虽然它们有相似之处&#xff0c;但也有明显的区别。 目标函数&#xff1a; 目标函数是优化问题中需要被最大化或最小化的函数。它定义了一个明确的优化目标&#xff0c;比如利润、成本、效率等。在数学模型中…

【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0

1、下载Mysql二进制报&#xff08;选择Linux的通用版本&#xff09; mysql官网地址&#xff1a;https://downloads.mysql.com/archives/community/ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar wget https://downloads.…