Istio全景监控与拓扑

来源: Istio全景监控与拓扑

根据Istio官方报告,Observe(可观察性)为其重要特性。Istio提供非侵入式的自动监控,记录应用内所有的服务。

我们知道在Istio的架构中,Mixer是管理和收集遥测信息的组件。每一次当请求到达的时候,Envoy会调用Mixer进行预检查,在请求处理完毕后也会将过程上报给Mixer。

image

今天我们会 结合开源监控插件(Jaeger)与嵌入Istio服务的应用性能管理服务 来为大家展示部分Istio的全景监控能力。

1 Jaeger

Istio结合Jaeger使用可以解决端到端的分布式追踪问题。2017年Jaeger成为了CNCF(Cloud Native Computing Foundation)的一员。Jaeger主要可以使用在微服务的架构上,来完成分布式的上下文广播,事物监控,根因分析,服务依赖关系的分析等功能。

image

Jaeger界面简洁,颜色柔和,无过多复杂得元素在内。清晰地在左侧配置项栏中列出了用户需要设置的配置,用户需要选择想观察的服务,观察的时间段以及一些附加功能配置。点击find trace按钮后,所有符合预设条件的Trace都会被展示出来。单机某个Trace则会进入他的调用详情中。

image

比如从上图中的这个调用,我们就可以看出来当请求抵达productPage时,会产生两个子访问,一个去调用了details组件,另一个则去调用了reviews组件。每个Span则是体现了调用父子关系和调用持续时间,简明扼要的提供了用户关心的信息。对于收集此类监控信息,设定合适的采样频率是十分有必要的,这样一来避免了过度监控造成的数据冗余和性能影响,另一方面也避免了监控样本过少,不能足够支撑分析的情况。调整采样率可以通过Helm模板中的values.yaml对其中的traceSampling进行修改,再进行服务网格的创建。

对于运行中的服务网格,则可以对deployment istio-pilot进行修改。

image

Kubectl edit deployment istio-pilot 搜索并修改PILOT_TRACE_SAMPLING这个属性。

2 APM(应用性能管理)

华为云Istio服务为了方便用户了解自己应用和集群的工作状态,也在服务界面添加了监控的功能。与其他监控插件相同的是,用户依然不需要对自己代码进行任何改动和重构,直接可以使用监控服务。首先在监控概览页面可以看到应用状态,异常相应统计,时延统计以及应用拓扑图。

  • 应用概览展示的是应用的就绪状况,是否有应用未就绪或异常状态可以直观反映,异常相应和超长请求时延则展示租户下所有组件中异常数较大和时延较高的几个组件。

image

  • 拓扑图则展示的是应用中的访问,调用关系,以及相应的平均时延。除此之外,每个组件可以展开,看到组件中实例的工作状态。对于因延时影响或者是中断相应会有相应的连线表达方式。

image

点击拓扑图上任意一个组件亦或是点击异常相应与超长请求时间上的任何一个组件都可以进入流量概况页。流量概况页主要是以数字的形式展示流量情况。

image

针对该组件的请求总数,错误技术,平均时延和最大时延都会以数据的形式直接传递给使用者。

  • 流量监控中也包含了调用链信息。相比Jaeger,这里的调用链多了持久化的一层,可以查阅时间段更宽的数据。

image

随着微服务趋势的发展,越来越多的应用在架构阶段就已经解耦成多个组件,越是对于组件多的应用,监控信息就显得越发重要。精准,正确的监控信息不仅能够第一时间帮助运维人员发现并定位应用中的问题,而且还能够通过既往的数据来支持运维人员进行资源的合理分配与调度。