概述
可观测性一词来源于控制理论,是指系统可以由其外部输出推断其其内部状态的程度,随着IT行业几十年的发展,it系统的监控,告警,问题排查等领域的逐渐成熟,it行业也将其抽象形成了一整套可观测性工程体系;目前可观测性已不仅仅是一种具体的工具或者技术,它更偏向是一种理念,已成为复杂分布式系统成功管理的关键组成部分,并对系统在运行时提供对其理解、探查以及调度的能力。
云原生网关是阿里云微服务引擎(MSE)下的一款托管类型网关产品,其将传统的流量网关与微服务网关进行了整合,本文将讲述如何基于云原生网关去搭建网关场景的可观测性体系。
网关场景可观测性建设的难点
网关作为业务流量的入口,其可观测性建设与整体业务的稳定性息息相关,同时由于网关的用户使用场景与功能较多,且网络环境也较为复杂,这对网关可观测性建设也带来了很多的难点。下面就针对其中的主要难点分别加以说明。
关注网关可观测性的角色众多
可观测性的核心在于通过观测数据、满足不同角色、对于系统状态的理解需求,网关作为流量入口,业务、研发、SRE等角色都会关注网关的状态,需要在深入理解不同角色需求的前提下才能够完善网关的可观测性体系。如下图,简单描述了整体可观测数据简单的生命周期,观测数据通过 App 生成,经过中间处理环节后进行存储,然后提供查询服务。观测数据服务于不同类型的人群,如产品的用户、业务、研发、SRE,不同的人群通过不同的形态来使用这些数据。
可观测性的基本生命周期
埋点不够精确,统计消耗大
点位不够准。埋点不难,难的是如何判断哪些数据是符合使用场景的。这就需要设计者有丰富的从业经验,或者在上线的过程中,不断迭代打磨。
统计采集代价高。可观测性的实现,很多时候往往是时间、空间、颗粒度三者之间的权衡。统计的时间粒度太密会造成存储容量的膨胀,统计的时间粒度太粗则不利于定位问题。这都为可观测性的实现带来了难题。
网络环境复杂, 问题排查难度大
在流量网关场景下,由于公网网络环境复杂,网关流量巨大,偶发问题排查难度巨大。
云原生网关可观测性实践
当前业界在可观测性能力建设方面通用的三大支柱:日志事件(Logging),分布式链路追踪(Tracing)以及指标监控(Metrics)。
指标(Metrics),是一段时间内记录的各个维度的量化信息,用来观察系统的某些状态和趋势;
●日志(Logs),是对程序运行过程中产生的一些离散事件的记录;
●链路追踪(Traces),是对一次请求从接收到处理完毕整个生命周期内的调用链路的记录;
云原生网关基于此三大支柱建设了云原生网关基础的可观测性能力。
确定网关核心指标,构建可观测性基础
核心指标即能准确描述系统内部运行状况的指标,在云原生网关场景,核心指标即为qps,rt,成功率等能够准确描述网关此时运行状况的指标。云原生网关同时集成了prometheus 与 sls,用户既可以通过网关的访问日志的etl处理获取更加精细准确的数据,也可以通过prometheus获取网关的实时监控。
基于访问日志进行etl处理后的仪表盘
针对统计采集消耗大的问题,云原生网关将部分采集消耗大的指标使用etl处理访问日志来减少采集消耗,将更需要实时性的统计指标采用程序内埋点的方式来保证实时性。
云原生网关的grafana大盘
针对不同角色对网关可观测性的不同需求,云原生网关提供了不同维度的数据表现,对于需要进一步精细分析的企业用户,也可以通过sls进一步进行数据加工。
划分系统边界,快速定位问题
网关通常请求量庞大,同时在微服务场景下,调用链路错综复杂,在这样的条件下想确认某一条请求的失败原因是一件困难的事情,针对这一场景,云原生网关对接了开箱即用的ARMS分布式链路追踪服务,同时也支持将trace数据投递到用户自建的skywalking,避免云产品锁定。
xtrace问题排查
对于未接入链路追踪的用户,云原生网关提供日志明细的详细解释,将请求失败的原因可视化为具体的图表,帮助用户确认问题边界,减少问题排查时的时间,
失败请求错误原因明细
风险管理定时巡查风险
云原生网关综合用户实例,规格,性能等数据,会给出目前实例存在的风险,并给出改善建议,极大程度上提高了允原生网关实例维护的自动化程度,降低客户使用成本。
风险管理的自动风险筛查
对云原生网关可观测性的未来规划
目前云原生网关构建了基本的可观测性体系,可视化、监控等能力已经都相对完善。用户可以基于目前的可观测体系来快速发现,定位问题。
配合业界的发展方向,接下来云原生网关在可观测领域主要有如下规划
- 就可观测性的三大数据支柱来说,为了解决部署上的跨平台方案冗杂以及数据不互通问题,Metrics、Logs、Traces大一统的可观测性采集框架发展是大势所趋,支持opentelemetry等统一的可观测性框架是接下来的首要工作
- 在根因分析方面我们也在关注行业最先进算法的动态,持续的探索进行智能根因分析的实践。