ISTIO文档解读学习(四)

                                策略与可观察性

策略:Istio允许应用程序自定义策略,用以在运行时强制执行相应的规则,如:1)限流用于动态限制发送给服务的流量。2)Denials、白名单和黑名单用于限制服务的访问,3)Header 的重写和重定向。

Istio使用属性来控制在服务网格中运行的服务的运行时行为。属性是具有名称和类型的元数据片段,用以描述入口和出口流量,以及这些流量所属的环境。Istio属性携带特定信息片段,例如API请求的错误代码,API请求的延迟或TCP连接的原始IP地址,Istio的主要属性生产者是Envoy,尽管专业的Mixer适配器和服务也可以生成属。属性名:Istio属性使用类似Java的完全限定标识符作为属性名。允许的字符是 [_.a-z0-9] 。该字符 "." 用作命名空间分隔符。例如, request.size 和 source.ip 。属性类型:Istio属性是强类型的。支持的属性类型由 ValueType 定义。

Mixer:基础设施的后端被设计用于提供建立服务支持功能。它们包括访问控制系统,遥测捕获系统,配额执行系统,计费系统等。传统服务会直接和这些后端系统打交道,和后端紧密耦合,并集成其中的个性化语义以及用法。Mixer在应用程序代码和基础架构后端之间提供通用中介层。它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之。应用程序代码不再将应用程序代码与特定后端集成在一起,而是与Mixer进行相当简单的集成,然后Mixer负责与后端系统连接。Mixer的设计目的是改变层次之间的边界,以此来降低总体的复杂性。从服务代码中剔除策略逻辑,改由运维人员进行控制。

Mixer 提供三个核心功能:1)前提条件检查。允许服务在响应来自服务消费者的传入请求之前验证一些前提条件。前提条件可以包括服务使用者是否被正确认证,是否在服务的白名单上,是否通过ACL检查等等。2)配额管理:使服务能够在分配和释放多个维度上的配额,配额这一简单的资源管理工具可以在服务消费者对有限资源发生争用时,提供相对公平的(竞争手段)。频率控制就是配额的一个实例。3)遥测报告:使服务能够上报日志和监控。在未来,它还将启用针对服务运营商以及服务消费者的跟踪和计费流。

可观察性:Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观察性,使运维人员能够排查故障、维护和优化应用程序,而不会给服务的开发人员带来任何额外的负担。通过 Istio,运维人员可以全面了解到受监控的服务如何与其他服务以及 Istio 组件进行交互。Istio 生成以下类型的遥测数据 1)指标:Istio 基于4个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标。Istio 还为网络控制平面提供了更详细的指标。除此以外还提供了一组默认的基于这些指标的网格监控仪表板。2)分布式追踪:Istio为每个服务生成分布式追踪 span,可以理解网格内服务的依赖和调用流程。3)访问日志:当流量流入网格中的服务时,Istio 可以生成每个请求的完整记录,包括源和目标的元数据。此信息使运维人员能够将服务行为的审查控制到单个工作负载实例的级别。这些机制的应用是基于一组属性的,每个请求都会将这些属性呈现给Mixer。在Istio中,这些属性来自于Sidecar代理(一般是Envoy)的每一次请求。

指标:(Metric)提供了一种以聚合的方式监控和理解行为的方法。为了监控服务行为,Istio 为服务网格中所有出入的服务流量都生成了指标。这些指标提供了关于行为的信息,例如总流量数、错误率和请求响应时间。除了监控网格中服务的行为外,监控网格本身的行为也很重要。Istio 组件可以导出自身内部行为的指标,以提供对网格控制平面的功能和健康情况的洞察能力。Istio 指标收集由运维人员配置来驱动。运维人员决定如何以及何时收集指标,以及指标本身的详细程度。这使得它能够灵活地调整指标收集来满足个性化需求。

代理级别指标:Istio 指标收集从 sidecar 代理(Envoy)开始。每个代理为通过它的所有流量(入站和出站)生成一组丰富的指标。代理还提供关于它本身管理功能的详细统计信息,包括配置信息和健康信息。Envoy 生成的指标提供了资源(例如监听器和集群)粒度上的网格监控。因此,为了监控 Envoy 指标,需要了解网格服务和 Envoy 资源之间的连接。

Istio 允许运维人员在每个工作负载实例上选择生成和收集哪个 Envoy 指标。默认情况下,Istio 只支持 Envoy 生成的统计数据的一小部分,以避免依赖过多的后端服务,还可以减少与指标收集相关的 CPU 开销。然而,运维人员可以在需要时轻松地扩展收集到的代理指标集。这支持有针对性地调试网络行为,同时降低了跨网格监控的总体成本。Envoy文档包括了Enovy统计信息收集的详细说明。Enovy统计里的操作手册提供了有关控制代理级别指标生成的更多信息。服务级别指标:除了代理级别指标之外,Istio 还提供了一组用于监控服务通信的面向服务的指标。这些指标涵盖了四个基本的服务监控需求:延迟、流量、错误和饱和情况。Istio 带有一组默认的仪表盘,用于监控基于这些指标的服务行为。

默认的istio指标由 Istio 提供的配置集定义并默认导出到Prometheus。运维人员可以自由地修改这些指标的形态和内容,更改它们的收集机制,以满足各自的监控需求。收集指标任务为定制 Istio 指标生成提供了更详细的信息。服务级别指标的使用完全是可选的。运维人员可以选择关闭指标的生成和收集来满足自身需要。控制平面指标:每一个 Istio 的组件(Pilot、Galley、Mixer)都提供了对自身监控指标的集合。这些指标容许监控 Istio 自己的行为(这与网格内的服务有所不同)。分布式追踪:分布式追踪通过监控流经网格的单个请求,提供了一种监控和理解行为的方法。追踪使网格的运维人员能够理解服务的依赖关系以及在服务网格中的延迟源。Istio 支持通过 Envoy 代理进行分布式追踪。代理自动为其应用程序生成追踪 span,只需要应用程序转发适当的请求上下文即可。Istio 支持很多追踪系统,包括Zipkin、Jaeger、LighStep、Datadog。运维人员控制生成追踪的采样率(每个请求生成跟踪数据的速率)。这允许运维人员控制网格生成追踪数据的数量和速率。访问日志:提供了一种从单个工作负载实例的角度监控和理解行为的方法。Istio可以以一组可配置的格式集生成服务流量的访问日志,为运维人员提供日志记录的方式、内容、时间和位置的完全控制。Istio 向访问日志机制暴露了完整的源和目标元数据,允许对网络通信进行详细的审查。访问日志可以在本地生成,或者导出到自定义的后端基础设施,包括Fluentd。

安装和示例在istio有详尽的文档,在本地测试时会遇到和文档结果不一致的现象,多半时版本和环境的差异,下图是book info的整体架构和内部具体实现流程:

发布了105 篇原创文章 · 获赞 86 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/dingyahui123/article/details/104718514