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

news2024/10/7 12:21:47

作者: 井轶

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

总结与展望

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

在这里插入图片描述

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【附源码】计算机毕业设计JAVA学生信息管理系统

【附源码】计算机毕业设计JAVA学生信息管理系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA my…

联想Filez助力知名生物制药企业 建立业务数据安全体系

苏州某生物制药企业是一家抗体研发企业,其研发生产基地设在苏州。主要从事临床样品(原液和成品)的开发和生产,致力于通过持之以恒的研发和专业的生产技术,以最快的速度实现生物制品的批准。 随着企业各项业务的快速发展…

Redis——》数据类型

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型5种基本类型3种特殊类型数据类型和底层数据结构5种基本…

第一个 GoWeb 程序,三款主流框架 Beego、Gin 和 Iris 快速入门

1、什么是web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。 一个Web应用程序是由完成特定任务的各种Web组件构成的并通过Web将服务展示给外界。…

网络是怎样连接的--生成HTTP请求消息过程

文章目录1.1 何为网址1.2 解析网址1.3 HTTP在干嘛1.4 生成http请求和响应1.1 何为网址 网址,准确来说应该叫URL,比如以http://开头的那一串东西.但实际上除了“http:”,网址还可以以其他一些文字开头,例如“ftp:”“file:”“mailto:”等。而…

免费申请Jetbrains全家桶

文章目录Jetbrains全家桶免费申请的人群学生和老师申请的要求申请方式申请流程解决收不到邮件的问题编辑内容进行认证申请成功Jetbrains全家桶 Jetbrains是著名的编程工具商业软件提供商,旗下有很多软件。包括IDE、团队开发工具、插件和微软.Net辅助工具、包括自创语…

[附源码]java毕业设计小型银行贷款管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C\C++刷题DAY4

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 1.第一题 206. 反转链表 - 力扣(LeetCode) 思路:调转指向关系,使用双指针的思想 1指向2,改成2指向1,以此类推。 参考代码: struct L…

2022年NPDP新版教材知识集锦--【第三章节】(5)

【系统工程】 系统工程的概念 系统工程原理将系统思维和系统工程过程模型的概念结合起来,通过设计、项目管理工具和方法的系统和集成过程将问题转化为解决方案。 所有系统都由具有属性或功能的部分组成,元素之间通过关系相互联系。 系统复杂性由结构…

想学爬虫爬取网页,但是不知道流程?

爬取网页总体概述: 1.使用urllib请求网页,获取网页源码。 2.使用bs4配合re正则表达式进行页面数据解析,获取到自己想要的数据。 3.使用pymysql保存到数据库或xlwt保存成excel文件。 温馨提示:学习之前需要先了解py基础知识&#x…

PTA题目 计算符号函数的值

对于任一整数n,符号函数sign(n)的定义如下: 请编写程序计算该函数对任一输入整数的值。 输入格式: 输入在一行中给出整数n。 输出格式: 在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。 输入样例1: 10输出样例1: sign(10) 1输入样…

住宅代理详细介绍——助您快速入门!

Oxylabs的高级代理池能够为客户提供来自世界各地的1亿多个住宅代理,并且其规模还在不断壮大中,即使是难搞的网络抓取任务也能够处理。住宅代理能轻松从复杂的目标中收集数据,帮助您在无需面对CAPTCHA验证或封锁的情况下实现抓取。 想要全方位…

在 Kubernetes 上最小化安装 KubeSphere

文章目录什么是 KubeSphere搭建环境准备工作部署 KubeSphere卸载 KubeSphere常见问题什么是 KubeSphere KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力…

免费公众号题库

免费公众号题库 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳转…

java之《图书管理系统》庖丁解牛

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《java练级之旅》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我…

大数据挖掘建模平台是怎样的?

大数据挖掘建模平台是可视化、一站式、高性能的数据挖掘与人工智能建模服务平台。面向企业级用户的大数据挖掘建模平台。平台采用可视化操作方式,通过丰富内置算法,帮助用户快速、一站式地进行数据分析及挖掘建模,可应用于处理海量数据、高复…

初识VisionPro应用开发

文章目录一、引言二、VisionPro应用开发指南1. 上手指南1.1. VisionPro开发概述1.2. 高级开发功能2. 选择应用开发路径(方式)2.1. 路径1:用QuickBuild和应用程序向导生成的操作接口进行交互式开发2.2. 路径2:用QuickBuild和自定义…

MySQL 经典面试题分析(值得收藏)

MySQL是程序员面试必问题目点之一,因为 MySQL 几乎占据了数据库的半壁江山。数据库的核心与原理基本是相通的,所以有了 MySQL 的基础之后,再去熟悉其他数据库也是非常快的,那么让我们一起来了解一下MySQL 。 MySQL 有很多存储引擎…

铁矿行业BI经营分析框架(二)万能框架-增长性、盈利性、流动性

有关铁矿行业的一些基础业务知识,铁矿行业的竞争本质上就是规模和成本的竞争。从业务角度探、采、选、冶这四块最重要的就是选矿这个过程。因为国内铁矿品位比较低,大部分都是30%左右的贫矿,所以选矿的成本就比较高。 要优化现金成本&#xf…

为什么推荐 Java 开发人员都学习并使用 Kotlin?

我使用 Java 已经有很长的时间了,工作中的使用有15年。如果算上在学校的时间的话,那就更长了。Java 的一个很大的优势是平台的开放性。这得益于 Java 字节代码和虚拟机的存在。由于 Java 语言自身的发展速度比较慢,就催生了很多运行在 JVM 上…