idou老师教你学istio2:监控能力介绍

我们知道每个pod内都会有一个Envoy容器,其具备对流入和流出pod的流量进行管理,认证,控制的能力。Mixer则主要负责访问控制和遥测信息收集。

如拓扑图所示,当某个服务被请求时,首先会请求istio-policy服务,来判定是否具备访问资格,若具备资格则放行反之则请求不会被下发到服务。这一切的访问信息,都会被记录在Envoy中,之后会上报给mixer作为原始数据。遥测数据的收集及其他功能完全是灵活可控的,你既可以配置新的收集指标和日志,也可以完全禁用这些功能。

1.Prometheus的应用和指标介绍

Prometheus是一款开源的监控和告警系统,2016年加入CNCF,以其灵活的检索语言,高效的数据存储方式以及多维度的数据模型使得越来越多的人使用。Istio自0.8开始就默认的将Prometheus包含在内,我们可以通过查询service或者pod看到普罗的运行状态和地址。点开Prometheus界面,UI十分简洁明了。

用户在Expression内输入想要查询数据的表达式,并且再输入的过程中,普罗还会在已有的指标中做出提示方便用户查找。我们输入一个简单的查询表达式istio_requests_total,点击Execute,在图形界面中,将鼠标放到图中的折线可以看到请求的详细信息。

详细信息中的每一项都可以作为选定参考指标的特性,例如我们需要查询返回值为200的productpage请求总数,就可以在之前的表达式中添加大括号和限定条件。

Istio支持和允许用户自己定义新的遥测数据,并且在官网->任务->遥测->收集指标和日志中有详细的描述。用户可以自定义需要的监控指标进而可以再普罗查看监控数据结果。

2.Jaeger UI的使用和介绍

Istio配合jaeger可以解决端到端的分布式追踪问题。Jaeger于2017年9月成为CNCF的成员。Jaeger是一款开源的分布式追踪系统,由Google Dapper和OpenZipkin社区联合推动。

Jager主要可以使用在微服务的架构上来完成分布式上下文广播,分布式事务监控,根因分析,服务依赖关系分析,性能/延迟优化等功能。

Jaeger的界面极其简洁,在首页面选择你想了解的服务(productpage)以及选择你想观测的时间范围(过去两天),而后点击find trace按钮,页面就会显示过去两天内访问productpage的所有trace。点击trace的名字,则会跳转到详情界面。

这个界面中你可以看到每个请求可能会分为不止一个的子请求,以及这个请求的处理时间。例如我们访问productpage,productpage会请求details和reviews这两个服务,那么初始的请求就会分为两个子请求,一个请求details的内容另一个请求reviews的内容。Details部分的请求总耗时4.99ms,reviews部分的请求耗时5.61ms。内容返回并处理后,整个productpage的请求耗时21.32ms。这个详情界面不仅会体现每个请求的耗时也反映服务之间的调用关系。根据istio官方给出的解释,我们知道istio proxy根据http部分headers来归纳和合并请求的。

对于一个结构复杂,流量庞大的服务网格,追踪所有的调用不但不利于收集有效数据,还会造成冗余,浪费资源等问题,所以在制定监控服务的时候也需要去设定其采样频率。对于Bookinfo这种示例型应用,我们的采样率可以设的高一点,对于大型应用就要进行适当的降低。

调整采样率一共有两种方式。

?在创建服务网格之前,我们可以提前设定好采样频率,在Helm模板的values.yaml文件中,pilot内的traceSampling属性可以对采样频率进行修改。

打开istio/chart/pilot/templates/deployment.yaml可以看到一个简单的赋值过程。

?正在运行的服务网格,对deployment istio-pilot进行编辑。首先查看所有的deployment:

然后对其进行编辑,搜索PILOT_TRACE_SAMPLING这个属性,并对其值进行修改:

我们先打开jaeger UI确定过去一个小时没有任何对productpage的访问。

而后将PILOT_TRACE_SAMPLING的值从原有的100改为50。修改并保存后会有提示信息显示istio-pilot已经被修改。

稍等片刻后,我们使用脚本curl productpage10次。再次在jaeger UI上选择productpage选择过去一小时,点击Find Trace,会发现这次只检测到4个trace。我们在用相同的脚本再运行一次,发现检测到10个trace。至此我们一共curl product page 20次总共获得10次 trace,符合总次数的50%。

现在我们用相同的方法,将PILOT_TRACE_SAMPLING改为100%并且稍等片刻。使用相同的脚本curl10次product page,再点击Find trace,现在总共有20个Trace,也就是先前的10个trace加上后来curl的10次,证明 PILOT_TRACE_SAMPLING修改完毕会采集所有的请求。

3.华为云istio服务中简明监控介绍

在组件详情界面中除去CPU使用率,内存使用这种基本的监控外,华为云提供了另外两项简明流量监控,分别是RPS(平均处理请求次数)和RT(平均响应时延)。RPS以分钟基本时间单位,纵轴则以处理请求次数为单位,用户可以直观的看到自己的应用单位时间内需要处理的请求数量。若RPS过高,则用户可以适当的采用相应措施,报障请求的高效处理。

RT也是以分钟为单位,但是纵轴则是该时间段内平均的请求响应时间。如果个别时间段请求时延过高,用户则需要对自己服务进行分析。

组件详情这个界面更多的还是提供一个粗粒度的流量监控,将应用的工作关键信息最直接,最明确的呈现给用户。方便用户对自己的应用,资源,服务规划进行调整和改进。在今后,华为云会提供维度更多的监控,分析等服务。

Istio提供很多即插即用的服务,用户不需要修改自己的代码,也不需要重新构建自己的应用便可以直接享用istio带来的“红利”。可视化的监控服务,可修改的监控内容,可以更好地让用户了解自己应用的工作状态。本文只介绍了入门级的istio监控内容,除上文内容外,监控服务还有更多的功能等待用户去研究和使用。Istio就像一座金矿,而金子只属于勤奋的淘金工人。

原文地址:http://blog.51cto.com/14051317/2344170

时间: 2024-08-29 04:34:21

idou老师教你学istio2:监控能力介绍的相关文章

idou老师教你学istio:监控能力介绍

经过了一年多的开发和测试,Istio于北京时间7月31日发布了1.0版本,并且宣布1.0版本已经可以成熟的应用于生产环境.对于istio的各项主要功能,之前的文章已经介绍的非常详细,并且还会有更多的文章来分析原理和实践功能.今天我们主要介绍的服务是istio流量监控能力.我们知道每个pod内都会有一个Envoy容器,其具备对流入和流出pod的流量进行管理,认证,控制的能力.Mixer则主要负责访问控制和遥测信息收集.如拓扑图所示,当某个服务被请求时,首先会请求istio-policy服务,来判定

idou老师教你学Istio 20 : Istio全景监控与拓扑

根据Istio官方报告,Observe(可观察性)为其重要特性.Istio提供非侵入式的自动监控,记录应用内所有的服务. 我们知道在Istio的架构中,Mixer是管理和收集遥测信息的组件.每一次当请求到达的时候,Envoy会调用Mixer进行预检查,在请求处理完毕后也会将过程上报给Mixer. 今天我们会结合开源监控插件(Jaeger)与嵌入Istio服务的应用性能管理服务来为大家展示部分Istio的全景监控能力. 1Jaeger Istio结合Jaeger使用可以解决端到端的分布式追踪问题.

idou老师教你学Istio 26:如何使用Grafana进行可视化监控

使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果,使用户更加直观地查看到实时通信状况. 在前面"如何使用Prometheus监控"的文章中,我们已经介绍istio如何通过它的核心组件Mixer收集用户的访问数据,配合一系列后端基础设施,转换为Prometheus后端接收的形式,提供日志.监控.配额.检查等核心运维功能.Istio基本安装

idou老师教你学Istio 07: 如何用istio实现请求超时管理

前言 在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简单的Bookinfo的微服务应用程序来动手实践一下Istio是如何实现请求超时的管理.看过idou老师前面文章的老司机应该都已经对Bookinfo这个实例驾轻就熟了,当然还存在部分被idou老师的文采刚吸引过来的新同学. 下面先简单的介绍一下Bookinfo这个样例应用整体架构,以便我们更好地

idou老师教你学Istio11 : 如何用Istio实现流量熔断

在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影响的范围.网络延迟的峰值以及抵御其他一些来自外部的恶意攻击等场景. 在接下来的任务中,idou老师将通过配置一个熔断器来详细介绍如何在Istio中实现熔断,以及背后的原理. 首先,我们需要添加一个应用程序来模拟访问网络中的通信.接着我们按照前面Istio实践中所要求的将Sidecar注入进应用中,然

idou老师教你学Istio 25:如何用istio实现监控和日志采集

大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序.首先在集群中安装并部署Istio. 1 收集遥测数据 创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置.如下图所示: 通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文件

idou老师教你学Istio 04:Istio性能及扩展性介绍

Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要求.从发布以来,Istio官方也在不断的对其性能进行优化增强.同时,Istio控制面的可靠性是Istio用于生产的另一项重要考量标准,自动伸缩扩容,自然是可靠性保证的重要手段.下面我们先从性能测试的角度入手,了解下Istio官方提供的性能测试方法与基准,主要分为以下四个方面展开. 一.函数级别测试

idou老师教你学Istio05: 如何用Isito实现智能路由配置

概要 要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复规则.而Envoy不仅会获得从pilot拿到的基本负载均衡信息,同时周期性的健康检查,也会告诉所有的envoy其他的实例现在的运行状况.负载均衡信息,及健康检查的信息可以使envoy更加智能的去分发流量. 在上述的pilot结构中,不难理解,platform adapter作为平台适配器,可以

idou老师教你学istio1:如何为服务提供安全防护能力

今天,我们就来谈谈Istio主打功能---保护服务. 那么,便引出3个问题: Istio 凭什么保护服务? Istio 具体如何保护服务? 如何告诉 Istio 发挥保护能力? Istio凭什么保护服务? 将单体应用程序分解为一个个服务,为大型软件系统的开发和维护带来了诸多好处,比如更好的灵活性.可伸缩性和可复用性.但这也带来了一些安全问题: 为了抵御中间***,需要对流量进行加密 为了提供灵活的服务访问控制,需要 mTLS(双向的安全传输层协议)和细粒度的访问策略 要审计谁在什么时候做了什么,