基于云原生网关的可观测性最佳实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 本文主要介绍了基于云原生网关构造可观测性能力的最佳实践,并通过介绍的三种实践覆盖了白盒观测,黑盒观测,基于网关构造业务可观测性等方面,针对可观测,虽然目前用户可以基于目前的可观测体系来快速发现,定位问题, 但我们目前能做的还有很多。

作者: 井轶


为什么要进行可观测性建设


可观测性并不是一个新词,该词来源于控制理论,是指系统可以由其外部输出推断其其内部状态的程度,随着 IT 行业几十年的发展,IT 系统的监控,告警,问题排查等领域的逐渐成熟,IT 行业也将其抽象形成了一整套可观测性工程体系。而之所以该词在这几年愈发火热,很大程度是因为云原生,微服务模式,DevOps 等技术的不断流行,对可观测性提出了更大的挑战。


云原生架构所倡导的微服务、DevOps 模式,同时带来了效率、可用性的提升, 但同时也极大程度增加了系统的复杂度, 也因此增强可观测性成了降低复杂度的唯一手段。


这里需要特别注意的是可观测性并不是监控,传统监控仅仅能够做到问题被动发现,可观测性的核心是基于对事先未定义的属性和模式的探索, 其不仅仅单纯是发现问题,更着重于对系统在运行时提供对其理解、探查以及调度的能力。


可观测性的基石指标、日志、事件、链路数据能够帮助我们更好的理解运行的系统,为事前预防、事中处理、事后复盘提供了重要决策依据, 同时可观测性体系也能够加速应用的持续交付,这就是为什么我们需要进行可观测性建设的原因。


如何针对网关场景进行可观察性建设


确定可观测性体系建设的目标


在没有监控或是监控混乱的状态下,开发者衡量系统的运行状态,都是靠一些不成体系的零散指标,盲人摸象,看不到全局。发生问题时,多是靠一些元老级开发者通过自己经验,从多个指标里模糊构建出业务全局状态,这个经验往往是不可复用的。


因此我们需要是通过技术手段建立系统的可观测性,可以清晰地“看见”系统运行的全面详细状态,降低经验门槛和不确定性,做出及时有效的决策。可观测性解决方案应当实现如下目标:


  • 通过可观测性体系能够决定是否实施服务降级或者服务中断
  • 当服务不可用、服务降级、失败时,能够快速发现。
  • 在服务不可用,失败时,能够帮助调试。
  • 确定容量规划和业务目标的长期趋势。
  • 揭示更改或添加的功能的意外副作用。 


构建网关通用可观测性指标


可观测性体系构建的目标是清晰的,但是仅仅只是使用了某些工具,加了某些监控并不足以实现目标,基于不同的业务场景需要有的放矢,不同经验的工程师可能会用不同类型的监控体系,  但核心是可观测性体系使用的监控体系能够正确反应系统的真实情况。


在网关可观测性体系的构建中,将主要的监控分为黑盒监控与白盒监控


  • 黑盒监控:  一种基于采样的方法。黑盒系统将监控负责用户请求的同一系统。最常用的是使用拨测模拟用户正常请求来访问业务。 


  • 白盒监控: 监控和可观测性依赖于从处于监控的工作负载发送到监控系统中的信号。这通常可以采用三个最常见组件的形式:指标、日志和 trace 


1.png


白盒监控中,指标的选择是件相对主观的事情,选择的指标能否准确体现系统的真实情况严重影响到整体可观测性体系目标的实现。


这里我们不妨回到网关最基础的功能,正是由于网关的代理功能,网关会天然沉淀通用逻辑如鉴权等,但本质仍然是对流量进行转发。


2.png


在这里我们将请求发起方称为网关的下游,请求转发的目的服务成为称为上游,  下游请求者是最能感知整体系统情况的,因此我们将网关服务类型指标的下游的成功率,请求量,RT 作为衡量整个网关的核心指标。


当然,这三个指标在多数系统中都是核心指标。在确定核心指标后,我们需要确定系统的路径指标,  即核心指标发生变化的时候,我们通过查看路径指标,能够快速定位问题的原因所,比如 CPU 占用百分比不断飙高时网关的耗时会同比增加,因此我们将系统指标(CPU, 内存,网络流量,连接数),服务指标中的上下游依赖(例如后端服务的端点变化情况)作为网关的二级指标。


通过上面的指标我们就基本确定了网关的可观测性指标,但是网关本身只是业务系统的一环,业务完整的可观测性需要结合业务场景去进行构建,例如使用网关日志记录业务侧状态码构建业务指标。


3.jpeg


基于云原生网关的可观测性建设最佳实践


云原生网关是阿里云微服务引擎(MSE)下的一款托管类型网关产品,其将传统的流量网关与微服务网关进行了整合,作为云上产品他无缝支持来云上的可观测性产品 ARMS、SLS,力争对客户零门槛,同时立足开源,网关也兼容了 zipkin, skywalking, prometheus 等可观测开源产品。下面基于前文所讲述的可观测体系构建的思路,基于云上产品来构建可观测性体系,并以实际场景说明网关场景的可观测性使用。


灰度发布场景中的可观测性


我们以服务新版本发布的场景作为云原生网关可观测性的具体例子 。


4.png


在上图的发布过程中,最前端的流量会在服务 v1 和 v2 之间进行切换,在这个场景中,我们的核心是可观测性能够及时保证应用发布过程中应用发布导致的异常能够及时被观测到。


在新应用部署前,我们应当首先将网关默认提供的可观测性能力开启, 首先开启网关的基础指标监控(cpu, 内存, 整体成功率), 并针对该场景在告警配置中开启服务级别监控,以便在 httpbin 服务的成功率下降时能够及时发现。


5.png


在开始之前我们已经部署了 httpbin v1 版本。


之后我们开始正式在阿里云 ACK 集群中部署 httpbin v2 版本的应用,该集群之前已经部署过 httpbin v1 的应用。


6.png


并在网关的服务详情中,为 go-httpbin 服务增加 v2 的子版本。

7.png


并通过修改路由配置将 go-httpbin 服务 v2 的流量切为 10%,此时使用 http 请求调用网关,可以查看到网关流量在版本之间的分布。


8.png

9.gif

10.png


云原生网关路由界面内置的监控能够有效帮助我们观测新版本与旧版本的运行状态,告警也能够在新服务发布有问题时及时发现异常。


使用 ARMS 拨测来检验真实环境下的业务


在真实的环境中,网关自身的运行指标并不能完全确认整个业务的运行状态,DNS 劫持,网络故障等问题很有可能造成部分用户的完全无法使用,在这种情况下我们需要完全模拟用户使用黑盒指标来验证系统的稳定性,在这里我们使用 ARMS 提供的云拨测产品用来观测业务的真实情况。


在阿里云创建定时拨测任务, 通过设置不同的观测点来观测不同地域的用户访问业务的真实情况。


11.png


间隔一段时间后,我们就可以得到拨测的结果详情。


12.png


结合网关的可观测性体系构造业务的可观测性体系


由于不同业务区别的区别,网关只能提供了网关自身的可观测能力,但通过网关提供的拓展能力,我们可以将网关的可观测能力与业务的结合起来,用来构建业务自身的可观测性体系。


例如一个书城服务,我们在网关层去监控不同用户的访问呢?这里我们可以利用结构化日志和 SLS 提供的日志消费来实现。网关可以通过自定义请求头将必要的信息提取出来,并投递到日志服务。


13.png


在实际应用中,我们最常见的就是将在请求 header 中的用户 id 提取到日志中,从而实现 userId 和网关请求的关联,在开启自定义日志个时候,我们可以对投递的日志使用日志服务的数据加工对原始日志进行提取。


14.png


通过该方式我们不仅能够将有意义的业务信息与网关进行关联,同时可以将不必要的访问信息进行丢弃,从而减少成本


总结与展望


本文主要介绍了基于云原生网关构造可观测性能力的最佳实践,并通过介绍的三种实践覆盖了白盒观测,黑盒观测,基于网关构造业务可观测性等方面,针对可观测,虽然目前用户可以基于目前的可观测体系来快速发现,定位问题, 但我们目前能做的还有很多。


15.png


配合业界的发展方向,接下来云原生网关在可观测领域主要有如下规划:


  • 就可观测性的三大数据支柱来说,为了解决部署上的跨平台方案冗杂以及数据不互通问题,Metrics、Logs、Traces 大一统的可观测性采集框架发展是大势所趋,支持 opentelemetry 等统一的可观测性框架是接下来的首要工作 
  • 在根因分析方面我们也在关注行业最先进算法的动态,持续的探索进行智能根因分析的实践。 


MSE 云原生网关预付费、MSE 注册配置预付费首购 8 折,首购 1 年及以上 7 折。点击此处,即享优惠!

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
3天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
23天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态。
|
28天前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
46 5
|
27天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
47 5
|
1月前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
2月前
|
存储 运维 监控
云原生应用的可观察性:理解、实现与最佳实践
【10月更文挑战第10天】随着云原生技术的发展,可观察性成为确保应用性能和稳定性的重要因素。本文探讨了云原生应用可观察性的概念、实现方法及最佳实践,包括监控、日志记录和分布式追踪的核心组件,以及如何通过选择合适的工具和策略来提升应用的可观察性。
|
2月前
|
安全 5G 网络性能优化
|
3月前
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)