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

部署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: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: ngx-service
  labels:
    app: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
    nodePort: 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/


http://www.kler.cn/a/382036.html

相关文章:

  • 在Java中,实现数据库连接通常使用JDBC
  • [mysql]修改表和课后练习
  • 103 - Lecture 1
  • Unity照片墙效果
  • 软考(中级-软件设计师)数据库篇(1101)
  • 基于STM32的手式电视机遥控器设计
  • mac 修改启动图图标数量
  • Docker部署Meta-Llama-3.1-70B-Instruct API openai格式,vLLM速度对比
  • [ DOS 命令基础 2 ] DOS 命令命令详解-网络相关命令
  • lanqiaoOJ 1112:小王子双链表 ← STL list
  • “微软蓝屏”事件暴露了网络安全哪些问题?
  • Python网络爬虫入门篇!
  • Python小白学习教程从入门到入坑------第二十七课 魔法方法(语法进阶)
  • 【数据结构】堆:TOK问题
  • Spring Boot 与 Vue 共筑二手书籍交易卓越平台
  • 可选链操作符(Optional Chaining)
  • unity3d——关于GetComponent<T>()
  • 解决Knife4j 接口界面UI中文乱码问题
  • 扩展卡尔曼滤波(EKF)的限制
  • 西南科技大学C++实验作业3——容器使用和文件输入输出流
  • 实现数传数据转网口(以太网)和遥控器SBUS信号转串口的功能
  • leetcode 75.颜色分类
  • Python的struct打包通讯数据头文件
  • 杨辉三角——c语言
  • 浏览器内核版本更新:Chrome 130✔
  • 【MySQL】函数