云原生网关可观测性综合实践

作者:钰诚

可观测性

可观测性(Observability)是指系统、应用程序或服务的运行状态、性能和行为能够被有效地监测、理解和调试的能力。

随着系统架构从单体架构到集群架构再到微服务架构的演进,业务越来越庞大,也越来越复杂。云原生时代背景下,随着微服务、Service Mesh、 Serverless 等新技术的出现,业务的复杂度很快就超过了个人的极限,可观测性在现代分布式系统的设计和运维中变得越来越重要。传统的监控和告警方法往往只关注系统的一些基本指标,而忽略了更细粒度的信息和上下文。可观测性的目标是通过全面的数据收集和分析,提供更深入和全面的洞察力,使运维和开发人员能够更好地理解系统的行为、排查问题、预测性能瓶颈和应对故障。

日志、指标和分布式追踪被称为可观测性的三大支柱:

  1. 日志(Logging): 日志是记录系统运行过程中产生的事件和信息的记录。通过记录应用程序的日志,可以了解系统的运行状态、错误和异常信息,方便故障排查和系统分析。常见的日志系统包括 ELK(Elasticsearch、Logstash、Kibana)和 Splunk 等。
  2. 指标(Metrics): 指标是用于衡量系统各个方面性能的度量标准。通过采集和记录指标数据,可以实时监控系统的运行情况,包括 CPU 使用率、内存占用、请求响应时间等。常用的指标系统有 Prometheus 和 InfluxDB 等。
  3. 分布式追踪(Distributed Tracing): 分布式追踪是用于跟踪和监控分布式系统中请求的路径和性能的技术。通过将请求在系统中的不同组件之间传递一个唯一标识符,可以追踪请求的流程和耗时,帮助分析和优化系统性能。常见的分布式追踪系统有 Zipkin 和 Apache Skywalking 等。

通过提供全面且精确的可观测性,系统的开发和运维人员可以更快速地发现问题、理解系统行为,并做出相应的优化和决策,从而提高系统的性能、稳定性和可靠性。

云原生网关可观测体系

MSE 云原生网关依托阿里云现有的云产品(日志服务 SLS、应用实时监控服务 ARMS)以及对开源软件的良好支持构建了丰富的可观测体系,为用户提供了强大的日志、监控、链路追踪以及告警功能,功能大图如下所示:

图片

网关的可观测性能力致力于帮助客户构建产品的可靠性体验,为客户提供故障发现与故障定位的能力,减少故障的发生以及降低故障的影响面。 基于网关的监控与告警管理功能,实现故障的及时发现与通知到客户;基于监控与日志,实现故障的快速定位;基于链路追踪,实现请求调用的全链路故障根因排查。

云原生网关可观测实践

过程概览

本文将依据下图中标注的功能模块出发,帮助读者体验网关可观测性在故障发现与故障定位中的能力。

图片

整体流程如下图所示:

  1. 用户收到网关发出的告警
  2. 用户查看 prometheus 监控找到出问题的路由、服务
  3. 用户查看 SLS 日志获取更详细的报错信息
  4. 用户通过链路追踪排故障的根因

图片

测试环境架构概览

图片

本文在 ACK 集群中部署了一系列 Springboot 的服务,调用关系如上图所示,其中 Spring SVC 4-2 发生了 crash。通过网关接入 ACK 集群,创建路由如下:

图片

测试过程中会通过以下三种请求去访问网关:

  1. 正常的请求,网关路由到 httpbin
  2. 在网关处就返回错误的请求,本文使用无法命中路由的请求
  3. 在上游服务返回错误的请求,网关路由到 Spring SVC 1

此时网关的错误率会出现明显上升。

故障发现与定位过程

通过告警策略及时发现故障

首先配置网关的告警策略,从网关实例粒度设置告警规则与通知策略,本文中采用了邮件通知的方式,除此之外还有电话、短信等方式。配置告警策略的示例如下图所示:

图片

通过以下邮件信息可以得知网关出现了故障:

图片

通过 Arms Prometheus 监控初步定位问题

接下来,查看网关观测分析->业务监控->全局看板的错误信息概览板块,当前监控信息如下:

图片

根据图中内容,可以得到以下信息:

  1. “网关粒度失败率”看板中,网关整体失败率是大于上游服务失败率的,这意味着一部分请求在网关处返回了错误码,一部分请求在上游服务处返回了错误码
  2. “路由粒度失败率”看板中,能够看到只有路由名称为 “spring” 的路由失败率不是 0
  3. “上游服务粒度失败率”看板中,能够看到只有服务名称为 “springboot-svc-1.app-system.svc.cluster.local” 的服务失败率不是 0

点击图中“路由失败请求数排行”或者“上游服务失败请求数排行”中的路由名或者服务名可以查看路由或者服务的详细信息。

路由名为 “spring” 的路由监控信息如下图所示:

图片

服务名为 “springboot-svc-1.app-system.svc.cluster.local” 的服务监控信息如下图所示:

图片

上图中显示出现错误的路由和服务返回的错误码为 5xx,至此,已经初步定位到问题所在:

路由 “spring” 指向的上游服务 “springboot-svc-1.app-system.svc.cluster.local” 出现了问题。

但是,目前还有两个问题需要解决:

  1. 在网关处返回错误的请求是什么原因?
  2. 服务 “springboot-svc-1.app-system.svc.cluster.local” 的错误是什么原因造成的?
通过 SLS 网关日志获取详细信息

接下来通过网关日志中心的 SLS 日志获取更详细的信息。

图片

首先点击 response_code,此时会自动生成查询请求,可以看到这段时间内网关的响应码只有三种:200,404,500。

在网关问题排查页面,输入响应码,可以查看错误码可能的原因:

图片

可以看到返回 404 响应码的原因是没有命中路由导致。

类似的,当选择响应码为 500 时,可以看到相应的路由名以及服务名,如下图所示:

图片

通过问题排查工具可以看到,错误是后端服务造成的:

图片

到现在为止,只剩下一个问题:

服务 “springboot-svc-1.app-system.svc.cluster.local” 的错误根因是什么?

通过 Arms xtrace 链路追踪分析调用链

借助于链路追踪技术,可以获取更细粒度的错误信息。只需要简单的配置,网关即可接入 Arms xtrace:

图片

ACK 集群上的 Java 应用按照以下文档进行配置:为容器服务 Kubernetes 版 Java 应用安装探针 [ 1]

图片

在 SLS 日志中找到一条错误请求的 traceid,根据 traceid 在链路追踪页面搜索相应的调用链路分析调用链路错误的根因:

图片

从链路追踪结果看,故障根因是 springboot-svc-4-2 服务错误,至此,一次完整的故障发现与故障定位已经完成。

总结

本次通过云原生网关可观测性进行故障发现和故障定位的实践过程中,首先通过网关的告警策略将故障通知到用户,然后通过 arms 提供的 prometheus 监控服务初步定位到出现故障的路由以及服务,之后通过 SLS 日志服务提供的网关的结构化日志进行查询分析,排查出部分错误是客户端请求路径错误导致,最后通过链路追踪对服务调用链路进行分析,最终成功对故障根因进行定位。

相关链接:

[1] 为容器服务 Kubernetes 版 Java 应用安装探针****

https://help.aliyun.com/zh/arms/application-monitoring/getting-started/install-arms-agent-for-java-applications-deployed-in-ack?spm=a2c4g.11186623.0.i6#arms-cs-k8s-java

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

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

相关文章

数字孪生在制造运行管理(MOM)的七大应用场景

数字经济时代,数字孪生作为实现各行各业智能化、数字化的重要手段之一,受到了各方的广泛重视。随着各项关键使能技术的不断发展,数字孪生的应用价值有望得到进一步释放。这些关键使能技术包括建模、渲染、仿真、物联网、虚拟调试、可视化等&a…

02_单片机及开发板介绍

单片机简介 单片机,又称为微控制器(Microcontroller),是一种集成了微处理器核心、存储器、输入/输出接口及各种功能模块的集成电路芯片。它通常由中央处理器(CPU)、存储器、输入/输出接口以及各种外设组成&…

文献阅读快速法-ChatPDF

如题,直接提供给大家一款能够快速阅读文档的好工具——iTextMaster。 iTextMaster是一款免费的pdf阅读浏览器,上传pdf文档后等待几秒钟,AI就会自动反馈给用户关于文档的摘要总结。十分的方便且实用。 ChatPDF为您提供简洁的文档摘要。对于那…

【算法|动态规划No.21】leetcode494. 目标和

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

8月19日PMP成绩,预计10月16日公布!附查询入口、流程

PMP的考试成绩一般在考后6-8周即可查询,8月PMP的成绩预计会在北京时间10月16日晚上公布,具体时间以官方公告为准。 如何查询8月考试成绩? 渠道一:收到PMI邮件提醒 当你注册PMI所使用的邮箱收到一封PMI发来的,标题为…

『PyQt5-Qt Designer篇』| 13 Qt Designer中如何给工具添加菜单和工具栏?

13 Qt Designer中如何给工具添加菜单和工具栏? 1 创建默认窗口2 添加菜单栏3 查看和调用1 创建默认窗口 当新创建一个窗口的时候,默认会显示有:菜单栏和状态栏,如下: 可以在菜单栏上右键-移除菜单栏: 可以在菜单栏上右键-移除状态栏: 2 添加菜单栏 在窗口上,右键-创建…

软件测试定位bug方法+定位案例(详解)

1、问题bug定位技巧 首先,作为开发也好,测试也好,定位问题有一个总的思路,而这个思路是和数据的走向一致的。 大致是这样: 用户层面问题 -> Web页面/软件界面 -> 中间件 -> 后端服务 -> 代码 -> 数据…

如何正确维护实验室超声波清洗器?

实验室一直被视为一个严谨而严肃的场所,实验应遵循一定的步骤,使用的设备也经历了详细的选择,如实验室超声波清洗机,其特点远强于一般类型的清洗机。专门负责采购的实验室人员一般对优质服务的实验室超声波清洗机印象深刻&#xf…

故障维修无忧服务:OLED透明拼接屏的专业技术支持与保修服务

OLED透明拼接屏作为未来显示技术的领军者,以其卓越的画质和全方位的优势在市场上备受推崇。 本文将深入探讨OLED透明拼接屏的画质特点和独有的优势,并为您提供选购指南、价格表以及故障维修服务,助您了解并选择最适合的OLED透明拼接屏。 一、…

使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

NPM 常用命令(十二)

目录 1、npm unpublish 1.1 使用语法 1.2 描述 2、npm unstar 2.1 使用语法 3、npm update 3.1 使用语法 3.2 描述 3.3 示例 插入符号依赖 波浪号依赖 低于 1.0.0 的插入符号依赖 子依赖 更新全局安装的包 4、npm version 4.1 使用语法 5、npm view 5.1 使用语…

Raven2靶机渗透

1. 信息收集 1.1 主机探测 sudo arp-scan -l1.2 端口扫描 nmap -p- -A 192.168.16.185开放了80端口,尝试登录网址查看信息,通过浏览器插件找出指纹 1.3 目录扫描 访问登录界面,发现remember Me怀疑是shiro界面 登录/vendor/界面&#xff0…

「深入探究Web页面生命周期:DOMContentLoaded、load、beforeunload和unload事件」

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. DOMContentLoaded 1.1 属性 1.2 A…

【aloam】ubuntu20.04 配置 aloam 环境,编译过程报错及成功解决方法

为什么写这篇博客 ALOAM是slamer的必经之路,official提供的基础环境推荐ubuntu16.04或者18.04,而我用20.04已经有一段时间了,不方便换,但由于其他原因也不得不去配置。过程中出现了几个问题,在这里也就20分钟&#xf…

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤

创建Maven版的Web工程 使用命令生成Web工程 使用mvn archetype:generate命令生成Web工程时,需要使用一个专门生成Web工程骨架的archetype(参照官网看到它的用法) -D表示后面要附加命令的参数,字母D和后面的参数是紧挨着的,中间没有任何其它…

记一次Redis Cluster Pipeline导致的死锁问题

作者:vivo 互联网服务器团队- Li Gang 本文介绍了一次排查Dubbo线程池耗尽问题的过程。通过查看Dubbo线程状态、分析Jedis连接池获取连接的源码、排查死锁条件等方面,最终确认是因为使用了cluster pipeline模式且没有设置超时时间导致死锁问题。 一、背…

掌握 Scikit-Learn: Python 中的机器学习库入门

机器学习 第二课 Sklearn 入门 概述机器学习与 Python 的完美结合Scikit-Learn 的核心组件与结构安装与配置验证安装 数据表示与预处理特征矩阵和目标向量数据处理 估计器模型的选择思考问题的本质研究数据的分布判断任务的复杂性分类问题回归问题 监督学习分类算法回归算法 无…

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时,出现连接异常或连接重置错误? 答案:连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法: 确定服务器的负载…

智能警用装备管理系统-科技赋能警务

警用物资装备管理系统(智装备DW-S304)是依托互云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对警用装备进行统一管理、分析的信息化、智能化、规范化的系统。 (1)感知智能化 装备感知是整个方案的基础,本方…

基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)三

1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数,进而实…