当前位置: 首页 > news >正文

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

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

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

2.1.2 安装prometheus

kubectl apply -f prometheus.yaml

在这里插入图片描述

2.1.3 检查prometheus是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

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

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

3.1.2 安装grafana

kubectl apply -f grafana.yaml

在这里插入图片描述

3.1.3 检查grafana是否运行

kubectl get deploy -n istio-system

在这里插入图片描述

kubectl get pod -n istio-system -o wide

在这里插入图片描述

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/

相关文章:

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

1. 模块简介 Prometheus 是一个开源的监控系统和时间序列数据库。Istio 使用 Prometheus 来记录指标&#xff0c;跟踪 Istio 和网格中的应用程序的健康状况。Grafana 是一个用于分析和监控的开放平台。Grafana 可以连接到各种数据源&#xff0c;并使用图形、表格、热图等将数据…...

结合 Spring Boot Native 和 Spring Boot 构建高性能服务器架构

随着云计算和微服务架构的普及&#xff0c;开发者们不断寻求提高应用性能和用户体验的解决方案。Spring Boot Native 的出现&#xff0c;利用 GraalVM 的原生映像特性&#xff0c;使得 Java 应用的启动速度和资源占用得到了显著改善。本文将深入探讨如何将前端应用使用 Spring …...

ArcGIS影像调色(三原色)三原色调整

本期主要介绍ArcGIS影像调色&#xff08;三原色&#xff09; ArcGIS影像调色&#xff08;三原色&#xff09;&#xff0c;对比度、亮度、gamma。红绿蓝三原色调整。 视频学习 ArcGIS影像调色&#xff08;三原色&#xff09;...

SQLite从入门到精通面试题及参考答案

目录 SQLite 是什么? SQLite 的优点有哪些? 轻量级与易于部署 零配置和低维护成本 良好的兼容性和跨平台性 高性能和可靠性 SQLite 的局限性有哪些? 并发处理能力有限 缺乏用户管理和权限控制功能 有限的扩展性 有限的网络支持 SQLite 和其他数据库系统(如 MyS…...

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数&#xff0c;字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数&#xff0c;分别是 toupper &#xff0c; tolower。 一.什么是字符转换函数&#xff1f; 顾名思义&#xff0c;即转换字符的函数&#xff0c;如大写字母转小写字母&am…...

Git 的特殊配置文件

文章目录 1.前言2.Git 标准配置文件.gitignore作用格式示例 .gitattributes作用格式示例 .gitmodules作用格式示例 .gitconfig作用格式示例 3.非 Git 标准约定文件.gitkeep简介示例 .gitacls作用格式示例 参考文献 1.前言 Git 是一个强大的版本控制系统&#xff0c;它使用多个…...

数据的表现形式(1)

数据的表现形式 西文字符编码 ASCII码&#xff08;美国信息交换标准码&#xff09; 计算机内部用一个字节&#xff08;8位二进制&#xff09;&#xff0c;来存放一个7位ASCII码&#xff0c;最高位为“0”&#xff0c;共 可以表示128个不同字符 ASCII码中&#xff0c;0是48&…...

《高频电子线路》—— 调幅

文章内容来源于【中国大学MOOC 华中科技大学通信&#xff08;高频&#xff09;电子线路精品公开课】&#xff0c;此篇文章仅作为笔记分享。 调幅 普通调幅 AM 普通调幅&#xff0c;也属于线性调制&#xff0c;需要了解其时域和频域。 时域&#xff08;表达式&#xff09; vΩ…...

ubuntu22.04安装ROS2Humble

参考链接 Ubuntu22.04——ROS2安装以及小海龟画圆 Ubuntu 22.04 安装 ros noetic Slam_in_autonomous_driving(一) 环境配置...

软中端,硬中断(学习笔记)

/proc/softirqs 提供了软中断的运行情况&#xff1b; /proc/interrupts 提供了硬中断的运行情况。 以下图片展示的是软中断内容&#xff1a; 在查看 /proc/softirqs 文件内容时&#xff0c;你要特别注意以下这两点。 第一&#xff0c;要注意软中断的类型&#xff0c;也就是这…...

scIDST:弱监督学习推断单细胞转录组数据中的疾病进展阶段

背景&#xff1a;患者来源组织中的单个细胞&#xff0c;每个都处于不同的病理阶段&#xff0c;因此这种细胞变异性阻碍了随后的差异基因表达分析。 结果&#xff1a;为了克服这种异质性问题&#xff0c;作者提出了一种新的深度学习方法&#xff0c;scIDST&#xff0c;该方法可以…...

Linux 下执行定时任务之 Systemd Timers

不知道 ECS 因为什么缘故&#xff0c;上面安装的 MySQL 服务老是不定期挂掉&#xff0c;本来想通过 Linux 得 Cron 配置个半小时的定时检测任务&#xff0c;结果一直没有执行&#xff0c;因此又尝试使用了 Systemd Timers 进行了重新配置&#xff0c;简要做个记录。 Systemd Ti…...

flutter 专题二 Flutter状态管理之Riverpod 0.8.4

一 、flutter 有哪些状态管理方式 Flutter的状态管理方式有很多&#xff0c;Redux、 Bloc、 MobX、Provider等等。单单一个Provider&#xff0c;我也见到了各种组合&#xff0c;例如ChangeNotifier Provider / StateNotifier Provider&#xff08; freezed&#xff09;。各…...

【Linux】从零开始使用多路转接IO --- poll

碌碌无为&#xff0c;则余生太长&#xff1b; 欲有所为&#xff0c;则人生苦短。 --- 中岛敦 《山月记》--- 从零开始使用多路转接IO 1 前言1 poll接口介绍3 代码编写4 总结 1 前言 上一篇文章我们学习了多路转接中的Select&#xff0c;其操作很简单&#xff0c;但有一些缺…...

Docker配置宿主机目录和网络映射

容器挂载宿主机目录 在Docker中&#xff0c;你可以通过-v或--volume选项将宿主机的目录挂载到容器中。这可以让你在容器和宿主机之间共享文件。 例如&#xff0c;如果你想将宿主机的/home/user/data目录挂载到容器的/data目录&#xff0c;你可以使用以下命令&#xff1a; do…...

第十七课 component组件解析

component组件解析 component组件的写法在众多组件写法中算是比较简单的&#xff0c;component组件结构组成如下&#xff1a; 1&#xff09;组件名 2&#xff09;组件模板 3&#xff09;利用Vue对象进行生成 基础示例&#xff1a; <div id"app"><test>…...

求余和求模是不是一样的,就要看看计算机中的 fix 和 floor 区别

在计算机中&#xff0c;fix和floor是两个不同的取整函数&#xff0c;它们各自有不同的取整规则。以下是fix和floor的详细区别&#xff1a; 一、定义与功能 fix函数 定义&#xff1a;fix函数是朝零方向取整的函数&#xff0c;即它会返回小于或等于&#xff08;对于正数&#xf…...

00 递推和递归的核心讲解

递归的步骤 说 f(n)含义返回/xx f(n)等价式子在第二步中观察趋势&#xff0c;发现边界值&#xff08;分类递归&#xff09;和终止值&#xff08;return&#xff09; 递归优化思路 记忆化 递推/动态规划的步骤 说f(n)含义循环 关系式列 初值 综上&#xff0c;题目分为两类&a…...

深度学习常用开源数据集介绍【持续更新】

DIV2K 介绍&#xff1a;DIV2K是一个专为 图像超分辨率&#xff08;SR&#xff09; 任务设计的高质量数据集&#xff0c;广泛应用于计算机视觉领域的研究和开发。它包含800张高分辨率&#xff08;HR&#xff09;训练图像和100张高分辨率验证图像&#xff0c;每张图像都具有极高…...

rust编写的系统监测器

系统监测器 技术栈 rusttaurivue3vue-echartsrsbuild 软件介绍 用于查看电脑的硬件信息&#xff0c;实时监测cpu&#xff0c;内存&#xff0c;硬盘&#xff0c;网络&#xff0c;进程等系统资源 图形化&#xff0c;动态化展示&#xff0c;美观实用 软件截图 下载 https:/…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...