ISTIO telemetry V2 介绍

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: ### 背景 ISTIO 早期版本(1.4以前)的架构非常优雅, 模块之间解耦清晰,职责分明。 但现在看来有一定理想化,所有流量通过Mixer,通过Mixer 统一采集和上报所有的遥测数据和服务间访问鉴权,导致一旦规模上来,Mixer 非常容易成为性能瓶颈。 ![image.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/920

背景

ISTIO 早期版本(1.4以前)的架构非常优雅, 模块之间解耦清晰,职责分明。 但现在看来有一定理想化,所有流量通过Mixer,通过Mixer 统一采集和上报所有的遥测数据和服务间访问鉴权,导致一旦规模上来,Mixer 非常容易成为性能瓶颈。

image.png



Telemetry V2介绍 

在1.4中,ISTIO提出 Mixer-less telemetry 架构,将Mixer 从主流程抽离。 将遥测和服务鉴权能力下沉到每个服务的代理Proxy Envoy中。了解ISTIO 以前架构的同学应该都知道,Mixer 是一个热拔插组件,有极好的扩展性。 支持代码中注册编写Adapter并重新打包的方式更新遥测对接的配置,也支持配置 Out Of Process Adapter  这样的外部适配器,进行遥测的对接和动态配置。但提供灵活性同时,也成为了整个ISTIO 明显的性能瓶颈。

image.png


image.png

Istio 中Telemetry V2的实现

那么ISTIO 1.4 是如何实现 Mixerless 的呢?
在1.4中, 服务的遥测和访问鉴权从Mixer逐渐开始下沉到Envoy中, 从而经过我们应用的出入流量不必全部上报到Mixer,实现了Mixer 旁路。   服务遥测在Envoy中完成追踪服务之间的流量请求,并在Envoy所在Pod中监听相关端口,提供Prometheus采集指标。

image.png

那么在ISTIO 支持EnvoyFilter  这个CRD,它提供一种机制,可以帮助我们定制 Pilot 所生成并下发给Envoy 配置,在EnvoyFilter中我们能够定义生效的pod范围,注入的时机以及执行内容。 同样EnvoyFilter支持WebAssembly,  我们可以通过EnvoyFilter 配置WebAssembly的执行时机,实现Envoy 的流量管理策略的更新, 例如:  https://istio.io/blog/2020/deploy-wasm-declarative/ 。
目前在ISTIO 维护的Envoy proxy中, 支持部分内置的WebAssembly 扩展, 目前有4个内置WebAssembly扩展(access_log_policy,stackdriver, stats,metadata_exchange)代码: https://github.com/istio/proxy/tree/master/extensions 

  • 其中access_log_policy,stackdriver 是用于往Google StackDriver推送数据
  • metadata_exchange和stats 用于遥测。 

    • metadata_exchange 会做reqeust和response的上下游标记,记录请求
    • stats 采集请求相关监控指标,暴露Prometheus 可采集的接口。

image.png

阿里云服务网格

阿里云服务网格 目前已经通过Telemetry V2的方式支持Prometheus 监控遥测,您可以在控制台一键开启或者关闭遥测功能,并将监控数据采集到自建Prometheus 或者 阿里云ARMS 中。

阿里云服务网格动态配置遥测

image.png

查看请求数据的监控大盘

image.png

目录
相关文章
|
负载均衡 应用服务中间件 nginx
5分钟搞懂Ingress / IngressController / IngressClass的区别
先来个一句话总结:Ingress由Ingress规则、IngressController、IngressClass这3部分组成。Ingress资源只是一系列路由转发配置,必须使用IngressController才能让路由规则生效,而IngressClass是IngressController的具体实现。使用原则:先部署IngressController → 再部署Ingress资源。
21707 0
5分钟搞懂Ingress / IngressController / IngressClass的区别
Istio中如何限流?
在 Istio 中,可以使用 Envoy 的内置限流机制来限制服务的流量。Envoy 是 Istio 中的数据平面代理,它可以在服务之间进行流量管理和控制。
691 0
|
前端开发 JavaScript
Tailwind CSS:基础使用/vue3+ts+Tailwind
Tailwind CSS:基础使用/vue3+ts+Tailwind
697 0
|
存储 缓存 算法
Linux中的红黑树(rbtree)【ChatGPT】
Linux中的红黑树(rbtree)【ChatGPT】
148 13
|
消息中间件 安全 Kafka
Kafka启动后需要开放什么端口?
Kafka启动后需要开放什么端口?
3686 7
|
网络协议 算法 网络架构
PPP协议
PPP协议
891 1
PPP协议
|
11月前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
11月前
|
JSON 搜索推荐 C++
vscode如何更改背景颜色主题,黑色或白色?
【11月更文挑战第16天】在 VS Code 中更改背景颜色主题,可通过三种方式实现:1) 使用快捷键 Ctrl+K 和 Ctrl+T(Mac 上为 Command+K 和 Command+T)选择主题;2) 通过菜单中的“管理”->“颜色主题”选项选择;3) 修改 settings.json 文件中的 "workbench.colorTheme" 属性。此外,用户还可从扩展市场安装更多主题以满足个性化需求。
22980 6
|
JavaScript 前端开发 编译器
三个小时vue3.x从零到实战(typescript的搭建、使用及资料)
该文章介绍了如何在Vue 3项目中集成TypeScript,包括TypeScript的安装、基本使用,以及如何通过TypeScript增强Vue应用程序的类型安全性。
261 0