根据 Istio 官方报告, Observe(可观察性)为其重要特性. Istio 提供非侵入式的自动监控, 记录应用内所有的服务.
我们知道在 Istio 的架构中, Mixer 是管理和收集遥测信息的组件. 每一次当请求到达的时候, Envoy 会调用 Mixer 进行预检查, 在请求处理完毕后也会将过程上报给 Mixer.
今天我们会结合开源监控插件 (Jaeger) 与嵌入 Istio 服务的应用性能管理服务来为大家展示部分 Istio 的全景监控能力.
1 Jaeger
Istio 结合 Jaeger 使用可以解决端到端的分布式追踪问题. 2017 年 Jaeger 成为了 CNCF(Cloud Native Computing Foundation)的一员. Jaeger 主要可以使用在微服务的架构上, 来完成分布式的上下文广播, 事物监控, 根因分析, 服务依赖关系的分析等功能.
Jaeger 界面简洁, 颜色柔和, 无过多复杂得元素在内. 清晰地在左侧配置项栏中列出了用户需要设置的配置, 用户需要选择想观察的服务, 观察的时间段以及一些附加功能配置. 点击 find trace 按钮后, 所有符合预设条件的 Trace 都会被展示出来. 单机某个 Trace 则会进入他的调用详情中.
比如从上图中的这个调用, 我们就可以看出来当请求抵达 productPage 时, 会产生两个子访问, 一个去调用了 details 组件, 另一个则去调用了 reviews 组件. 每个 Span 则是体现了调用父子关系和调用持续时间, 简明扼要的提供了用户关心的信息. 对于收集此类监控信息, 设定合适的采样频率是十分有必要的, 这样一来避免了过度监控造成的数据冗余和性能影响, 另一方面也避免了监控样本过少, 不能足够支撑分析的情况. 调整采样率可以通过 Helm 模板中的 values.YAML 对其中的 traceSampling 进行修改, 再进行服务网格的创建.
对于运行中的服务网格, 则可以对 deployment istio-pilot 进行修改.
Kubectl edit deployment istio-pilot 搜索并修改 PILOT_TRACE_SAMPLING 这个属性.
2 APM(应用性能管理)
华为云 Istio 服务为了方便用户了解自己应用和集群的工作状态, 也在服务界面添加了监控的功能. 与其他监控插件相同的是, 用户依然不需要对自己代码进行任何改动和重构, 直接可以使用监控服务. 首先在监控概览页面可以看到应用状态, 异常相应统计, 时延统计以及应用拓扑图.
应用概览展示的是应用的就绪状况, 是否有应用未就绪或异常状态可以直观反映, 异常相应和超长请求时延则展示租户下所有组件中异常数较大和时延较高的几个组件.
拓扑图则展示的是应用中的访问, 调用关系, 以及相应的平均时延. 除此之外, 每个组件可以展开, 看到组件中实例的工作状态. 对于因延时影响或者是中断相应会有相应的连线表达方式.
点击拓扑图上任意一个组件亦或是点击异常相应与超长请求时间上的任何一个组件都可以进入流量概况页. 流量概况页主要是以数字的形式展示流量情况.
针对该组件的请求总数, 错误技术, 平均时延和最大时延都会以数据的形式直接传递给使用者.
流量监控中也包含了调用链信息. 相比 Jaeger, 这里的调用链多了持久化的一层, 可以查阅时间段更宽的数据.
随着微服务趋势的发展, 越来越多的应用在架构阶段就已经解耦成多个组件, 越是对于组件多的应用, 监控信息就显得越发重要. 精准, 正确的监控信息不仅能够第一时间帮助运维人员发现并定位应用中的问题, 而且还能够通过既往的数据来支持运维人员进行资源的合理分配与调度.
来源: https://www.cnblogs.com/huaweiyuncce/p/10025068.html