31.云原生Istio可观测性之官网Bookinfo应用实战演示

云原生专栏大纲

文章目录

    • 可观测性
      • kiali介绍
        • Overview(概观)
        • Application(应用维度)
        • workloads(负载维度)
        • Services(服务维度)
        • Istio Config(配置维度)
      • Kiali部署
      • 通过 Gateway 访问 Kiali
      • 查看链路追踪数据
      • 查看Jaeger中链路追踪详情
      • Kiali可能出现的问题
        • Kiali 一直显示 Empty Graph
        • 可能失败的原因
        • 分布式链路追踪按钮跳转问题

可观测性

Istio 集成了 Jaeger、Zipkin 和 Skywalking 等链路追踪应用,能够有效地捕获服务网格的结构,展示网络拓扑结构,并分析网格的健康状况。
这一切都得益于 Envoy 代理的实现。由于所有进出流量都需要经过 Envoy 代理,Envoy 可以捕获这些流量记录,并将其推送到相应的链路追踪系统中。这样一来,可以链路追踪系统轻松地监控和分析服务网格内的流量情况。
另外 Istio 还支持 Prometheus、 Grafana 收集指标数据。
下面我们将使用官方的模板部署 Kiali 、 还有 Jaeger,然后通过 Kiali 统一查看集群的指标信息。
Kiali是一个用于可视化和监控Istio服务网格的控制面板。它提供了一个直观的用户界面,帮助用户了解和管理服务网格中的微服务应用程序。
image.png
kiali 架构还是比较简单的,属于单体应用。kiali 后台既可以跟外部服务 prometheus、cluster API 进行通信获取 istio 服务网格信息,也可以集成可选服务 jaeger 和 grafana做全链路跟踪和可视化指标度量。
以下是Kiali控制面板的主要功能和特点:

  1. 服务拓扑图:Kiali通过绘制服务之间的关系和通信流量,展示了服务网格的拓扑结构。用户可以查看微服务应用程序的整体架构,了解服务之间的依赖关系和通信路径。
  2. 流量可视化:Kiali能够显示服务之间的实时流量,并以图形化方式展示流量的分布和流向。用户可以轻松地追踪和监控流量路由、负载均衡和流量控制策略的情况。
  3. 性能指标和健康状态:Kiali提供了服务的性能指标和健康状态的可视化展示。用户可以查看服务的请求量、延迟、错误率等指标,并快速识别出性能瓶颈和故障。
  4. 故障诊断和故障排查:Kiali允许用户跟踪请求的路径,并提供了故障诊断和故障排查的工具。用户可以追踪请求的流程,查找和定位故障点,并进行故障排查和修复。
  5. 安全策略可视化:Kiali能够展示服务网格中的安全策略和访问控制规则。用户可以查看和管理服务的身份认证、流量加密和访问控制策略,确保服务之间的通信是安全的。
  6. 智能建议和自动化分析:Kiali提供了智能建议和自动化分析的功能,帮助用户优化服务网格的配置和性能。它可以检测潜在的问题和优化机会,并提供建议和指导。

总而言之,Kiali控制面板为用户提供了一个直观和全面的视图,帮助他们监控、管理和故障排查Istio服务网格。它提供了丰富的可视化功能,使用户能够更好地理解和优化服务之间的通信和性能。

Kiali kiali官网

  1. kiali登录token获取
kubectl get secrets -n istio-system
kubectl describe secrets -n istio-system <kiali-token>

kiali介绍

Overview(概观)

该菜单全局性展示所有命名空间下服务的流量(traffic)、配置状态(config status)、健康状态(✔)、应用数量(Applications)等。
image.png

Application(应用维度)

applications 指运行中的应用,kiali 独有概念。
image.png

注意:kiali只能识别设置了app标签的应用。如果一个应用有多个版本,需要将这几个版本的 app 标签设置为相同的值。

workloads(负载维度)

kiali 中的负载(workloads)跟 k8s 中的资源对应(比如 deployment、Job、Daemonset、Statefulset 等)。k8s 中的这些资源都可以在 kiali 中检测到,不管这些资源有没有加入到 istio 服务网格中。
image.png

Services(服务维度)

对应 k8s 的 service 资源类型
image.png

Istio Config(配置维度)

istio 相关配置类信息。比如这里选择 istio type 类型,将显示有关 istio 服务网格下面的各个类型对应的配置信息状态(✔ 表示配置有效;!表示告警)
image.png

Kiali部署

拉取 Istio 官方的仓库:

git clone https://github.com/istio/istio.git

在 samples/addons/ 目录中有以下目录或文件:

samples/addons/
├── extras
│   ├── prometheus-operator.yaml
│   ├── prometheus_vm_tls.yaml
│   ├── prometheus_vm.yaml
│   ├── skywalking.yaml
│   └── zipkin.yaml
├── grafana.yaml
├── jaeger.yaml
├── kiali.yaml
├── prometheus.yaml
└── README.md

我们启用 grafana.yaml、jaeger.yaml、kiali.yaml、prometheus.yaml 四个文件。

kubectl apply -f samples/addons

Istio 默认使用 Jaeger 做链路追踪,我们也可以使用 Skywalking 来做追踪。extras 目录中的配置我们可以自行部署。
执行命令查看其 Service 对应的 IP 和端口:

kubectl get svc  -n istio-system

image.png
现在,我们有两种方式让 kiali 在外部访问,一种是修改 Service 配置,将其访问类型修改为 NodePort,另一种是使用 istio-ingressgateway 配置流量入口。

通过 Gateway 访问 Kiali

kiali_gateway.yaml

apiVersion: networking.istio.io/v1alpha3  
kind: Gateway  
metadata:  name: kiali-gateway  
spec:  selector:  istio: ingressgateway  servers:  - port:  number: 15029  name: http-kiali  protocol: HTTP  hosts:  - "*"
kubectl -n istio-system apply -f kiali_gateway.yaml

接下来,创建一个 VirtualService 资源,将 Gateway 路由到 Kiali 服务.
kiali_vs.yaml

apiVersion: networking.istio.io/v1alpha3  
kind: VirtualService  
metadata:  name: kiali  
spec:  hosts:  - "*"  gateways:  - kiali-gateway  http:  - match:  - uri:  prefix: /kiali  route:  - destination:  host: kiali.istio-system.svc.cluster.local  port:  number: 20001
kubectl -n istio-system apply -f kiali_vs.yaml

然后修改 istio-ingressgateway,新增加一个配置为 kiali 暴露服务。

kubectl edit svc istio-ingressgateway -n istio-system
- name: kialinodePort: 32667port: 15029protocol: TCPtargetPort: 15029

然后访问

查看链路追踪数据

  1. kiali登录token获取
kubectl get secrets -n istio-system
kubectl describe secrets -n istio-system <kiali-token>
  1. 制作请求

因为默认链路追踪采样率是 1%,所以可以将请求次数设置大一些。

for i in `seq 1 1000`; do curl -s -o /dev/null http://192.168.31.21:32666/productpage; done
  1. 查看链路图

image.png
image.png
Kiali 的 Graph 数据主要来自两个来源:Prometheus 和 Istio 本身的遥测数据。

  1. Prometheus:Prometheus 是一个开源监控和警报工具,它用于收集和存储 Istio 服务网格中的指标数据。Istio 使用 Envoy 代理收集遥测数据,这些数据随后被 Prometheus 抓取和存储。Kiali 使用这些 Prometheus 数据来生成服务之间的流量、错误率、延迟等指标。
  2. Istio 遥测数据:Istio 服务网格生成的遥测数据包括请求、响应、延迟以及 Envoy 代理的其他性能指标。这些数据由 Istio 组件(例如 Mixer 和 Pilot)以及 Envoy 代理本身生成。Kiali 从这些遥测数据中获取服务拓扑信息,以创建服务之间的依赖关系图。

Kiali 将这两个数据源的信息整合在一起,生成 Graph,它展示了服务网格的拓扑结构、服务之间的流量以及其他性能指标。这有助于用户更好地理解服务之间的依赖关系,发现潜在的性能问题,并优化服务网格配置。

查看Jaeger中链路追踪详情

  1. 暴露jaeger-query

image.png

  1. 登录查看

image.png

  1. 查看详情

image.png

Kiali可能出现的问题

Kiali 一直显示 Empty Graph

可能失败的原因

如果你的 Kiali 一直显示 Empty Graph。请关注以下几种可能的情况:

  • 集群版本低于 1.23 ,需要升级 Kubernetes 集群。
  • 访问的地址不正确,没有配置对 /productpage 的访问地址,请求流量没有打入集群。
  • Pod 没有被注入 istio-proxy。

你可以在 Kiali 的 Workloads 查看每个负载的 Pod 信息,正常情况应当如下所示:

分布式链路追踪按钮跳转问题

点击下图分布式链路追踪按钮会出现问题
image.pngimage.png
查看jaeger-query组件svc,服务并没暴露,自行配置nodeport暴露方式
image.png

修改kiali的jaeger-query配置,使用暴露ip+port
image.png
将http://jaeger-query.istio-system.svc:16686修改为http://192.168.31.21:31051
image.png
重启kiali
image.png
访问测试:
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频声波的主观感受

一、响度 声压是“客观”的&#xff0c;响度是“主观”的。 响度又称音量。人耳感受到的声音强弱&#xff0c;它是人对声音大小的一个主观感觉量。响度的大小决定于声音接收处的波幅&#xff0c;就同一声源来说&#xff0c;波幅传播的愈远&#xff0c;响度愈小…

React18原理: React核心对象之Update、UpdateQueue、Hook、Task对象

Update 与 UpdateQueue 对象 1 ) 概述 在fiber对象中有一个属性 fiber.updateQueue是一个链式队列&#xff08;即使用链表实现的队列存储结构&#xff09;是和页面更新有关的 2 &#xff09;Update对象相关的数据结构 // https://github.com/facebook/react/blob/v18.2.0/pa…

VSCode The preLaunchTask ‘C/C++: clang++ 生成活动文件‘ terminated with exit code -1

更改tasks.json文件里面的type为shell 选择g 选择g&#xff0c;然后点回到text.c&#xff0c;按下F5. 得到结果。 文中内容参考: 从零开始手把手教你配置属于你的VS Code_哔哩哔哩_bilibili https://blog.csdn.net/qq_63872647/article/details/128006861

【EasyV】QGIS转换至EasyV

QGIS转换至EasyV 第一步&#xff1a;导入QGIS第二步 坐标系转换第三步 集合修正第四步 重命名字段第五步 导出WGS geojson坐标第六步 导入EasyV 第一步&#xff1a;导入QGIS 第二步 坐标系转换 第三步 集合修正 第四步 重命名字段 第五步 导出WGS geojson坐标 第六步 导入EasyV…

【vue vue-seamless-scroll】解决vue-seamless-scroll鼠标悬浮才滚动或者只滚动一次就失效的问题

解决问题&#xff1a;使用vue-seamless-scroll发现只有鼠标悬浮上去才滚动&#xff0c;而且滚动一次停止了 目标效果&#xff1a; 解决方案&#xff1a; 最后发现是因为数据需要在页面挂载好就赋值&#xff0c;否则页面在加载完成后&#xff0c;数据无法自动滚动。但因为数据…

c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固

目录 构造 构造的基础概念&#xff1a; 模拟 练习1&#xff1a;扫雷 练习2&#xff1a;灌溉 练习3&#xff1a;回文日期 构造 构造的基础概念&#xff1a; 构造算法是一种用于解决特定问题的算法设计方法。在C语言中&#xff0c;构造算法通常涉及到创建一个函数或类来实…

ARM服务器上部署zookeeper集群

由于ARM服务器上部署zookeeper集群,会存在加载不到主类问题,现在把遇到的问题进行总结下,问题如下: [rootnode206 apache-zookeeper-3.5.10]# bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data1/software/apache-zookeeper-3.5.10/bin/../conf/…

四、Burpsuite工具之proxy模块详解-intercept功能

前言&#xff1a; 过了一个年&#xff0c;感觉好久都没有更新了&#xff0c;今天就从burpsuite的更新开始吧。 前面已经说过了burpsuite的安装和proxy代理的配置&#xff0c;今天说一下proxy模块中非常有用的intercept功能。 intercept功能介绍&#xff1a; intercept是拦截…

Spring之AOP源码解析(中)

前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,…

APP的UI自动化demo(appium+java)

文章目录 appium连接手机java代码实现-第一版第二版-接入testng和隐式等待显示等待 appium连接手机 准备工作 1、查看连接手机模拟器是否连接成功&#xff0c;获取设备名称 执行命令&#xff1a;adb devices 2、查看android内核版本号—>paltformVersion 执行命令&#xf…

Postman接口关联实战解析

在使用postman做接口测试时&#xff0c;有时候后面的接口需要获取前面接口的某一个返回值做为请求参数&#xff0c;这时就可以使用关联。 如从A接口提取出a字段的值&#xff0c;供B接口的b字段使用。 一个接口的返回报文如下&#xff1a; {"retCode": "0&quo…

SwiftUI 集合视图(Grid)拖放交换 Cell 的极简实现

概览 自从 SwiftUI 横空出世那天起&#xff0c;小伙伴们都感受到了它惊人的简单与便捷。而在本课中&#xff0c;我们将会用一个小“栗子”更直观的让大家体验到它无与伦比简洁的描述性特质&#xff1a; 如上图所示&#xff0c;我们在 SwiftUI 中实现了 Grid 中拖放交换 Cell 的…

基于SpringBoot + Layui的社区物业管理系统

项目介绍 社区物业管理系统是基于java编程语言&#xff0c;springboot框架&#xff0c;idea工具&#xff0c;mysql数据库进行开发&#xff0c;本系统分为业主和管理员两个角色&#xff0c;业主可以登陆系统&#xff0c;查看车位费用信息&#xff0c;查看物业费用信息&#xff0…

2个wordpress优化SEO主题模板

SEO优化wordpress主题 简洁的SEO优化wordpress主题&#xff0c;效果好不好&#xff0c;结果会告诉你&#xff0c;适合SEO公司使用的主题。 https://www.jianzhanpress.com/?p2804 SEO优化海外WordPress主题 简洁的SEO优化海外服务商WordPress主题&#xff0c;为中国制造202…

HTTP REST 方式调用WebService接口(wsdl)

一、WebService接口正常使用SOAP协议调用&#xff0c;测试时常采用SoapUI软件调用&#xff0c;具体如下&#xff1a; 二、由于目前主流web服务逐渐转换为RESTful的形式&#xff0c;且SOAP协议的实现也是基于HTTP协议&#xff0c;故存在通过HTTP调用WebService接口的可能 2.1 …

Flink双流(join)

一、介绍 Join大体分类只有两种&#xff1a;Window Join和Interval Join Window Join有可以根据Window的类型细分出3种&#xff1a;Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 &#x1f338;Window 类型的join都是利用window的机制…

【OpenFeign常用配置】

OpenFeign常用配置 快速入门&#xff1a;1、引入依赖2、启用OpenFeign 实践1、引入依赖2、开启连接池功能3、模块划分4、日志5、重试 快速入门&#xff1a; OpenFeign是一个声明式的http客户端&#xff0c;是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于…

C++ template-2

第 5 章 基础技巧 5.1 typename 关键字 关键字typename在C标准化过程中被引入进来&#xff0c;用来澄清模板内部的一个标识符代表的 是某种类型&#xff0c;而不是数据成员。考虑下面这个例子&#xff1a; template<typename T> class MyClass { public:void foo() {t…

Nginx -2

接着上文写 5.4.7 验证模块 需要输入用户名和密码 模块名称&#xff1a;ngx_http_auth_basic_module 访问控制基于模块 ngx_http_auth_basic_module 实现&#xff0c;可以通过匹配客户端资源进行限制 语法&#xff1a; Syntax: auth_basic string | off; Default: auth_ba…