云原生可观测性实践

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 云原生架构给可观测性带来了新挑战,在微服务和容器化的背景下,如何快速定位并解决应用出现的问题?本次直播将会从基本的原理开始介绍,结合实际场景来讲述如何借助ARMS/Tracing Analysis来排查常规问题,在上述产品赋能下,让您诊断问题变得更轻松!由阿里巴巴开发工程师垆皓为大家带来这次直播分享。

声明:本文根据阿里云开发者社群直播整理而来。
讲师:垆皓

本次分享主要围绕以下四个方面展开:
1、可观测性
2、基本原理
3、产品介绍
4、实战演示

一、可观测性

首先我们从监控谈起:监控主要解决应用在线上运行遇到的一些问题,如图所示:
image.png

在云原生背景下,由单机服务变为分布式服务之后给监控带来的挑战:
image.png

在传统的单应用只关注单机应用的状态,各应用之间的依赖性不是很复杂;在微服务架构下,客户端的请求先通过网关转发给之后对应的具体的应用,每个应用完成不同的功能,各应用的依赖性变的很复杂,这样就会导致问题的排查以及故障的定位难度也会变的很复杂。

接下来看容器化的部署:
image.png

K8S的对于运维的发布带来了许多方便之处,但实际上也引入了一些问题:比如某一个应用pod的resourse限制设置的存在不合理之处,导致整个应用的状态非正常状态。

这样的话,在K8S的状态之下,监控不但要关注应用的状态,同时也要关注整体所依赖的底层资源的状态。

比如:一个pod在某一个load中运行,受其他pod的影响,发生了漂移,那么就要关注发生漂移的原因。

二、基本原理

那么到底什么是云原生的可观测性?
image.png

在云原生的大背景下,可观测性是依赖于之前介绍的三种数据,在依赖的基础之上获取更多、更复杂的数据,不仅仅收集某个应用的Traces数据,而且会收集许多数据:包括主机,应用以及K8S等相关数据,再由这些指标数据相互关联来发现一些问题。Trace数据之前可能是某一类应用调用的堆栈,现在可能变成上下游窜的几百个应用,之后通过某一次调用把相互涉及到的几百个应用都串联起来,事件数据可能就会引入一些类似于K8s的pod生命周期的事件或者一些别的事件。

可观测系统基于Metrics、Traces、Logs这三种数据构造,不仅可以获得应用的每个接口执行效率,也可以获得底层资源,比如K8S的底层资源的运行状态,从某一个前端到它的后端开始处理,处理完成之后到转发、应用,整个链路都需要完整的被追踪,相当于可观测性对比与传统的监控来说,可观测性更强调的是分布式系统发生的所有事件都能够被观测,给出合理的解释。

如果可观测系统出现问题之后,该如何解决?

image.png

目前来说,最出名的方法是普罗米修斯,普罗米修斯侧重于Metrics数据的系统。

它是通过API暴露Metrics指标,被暴露的指标通过普罗米修斯去拉的方式写入到一个数据库,在数据库处理分析之后通过一个大盘展示。

接下来来看对于Tracing数据的解决方案:
image.png

OpenTracing解决方案是一种标准,它定义了整个Trace,比如过来一个请求,我们该如何记录它?记录这个请求的哪些属性?然后把这个请求往下串联起来,把它的相关数据,比如请求的标识,通过什么方式往下传,传下去的时候包括数据的格式,它的数据库的目标地址是什么,此时可以往这个请求上加一个“ke”和“y6”的值,打上标签,通过上述操作,记录了请求的相关数据。这样的话形成了统一的一个Tracing的规范,在云原生的背景下OpenTracing的解决方案是一个比较流行的解决方案。

三、产品介绍

image.png

1.ARMS ARMS是一款应用性能监控的工具,涵盖了前端监控、应用监控和普罗米修斯的各类子产品,涵盖了从浏览器端到小程序端、手机APP、和KYS容器环境的监控,可以将全栈式的请求串联起来,方便了问题的排查。

2.前端监控 前端监控可以把请求发出到后面处理全部串联起来。

3.APP监控 提供了安卓和ios端的相关情况。

4.业务监控 :如图所示
image.png

某一个请求进入,做标记为商品购买,继续下传到应用B,这个标记可以持续下传,这样相当于给整个链路打上了标记,可以统计某类请求对应的数目,响应时间等,通过业务的寓意的耗时是不是比其他的耗时长,可以做出更精准的判断。

image.png

image.png

四、实战演示

image.png

左图:核心在于某次请求进入之后,生成一个Trace Id,继续调用,发送一个ATP请求,在ATP请求把TraceId带上,这样的话下游应用在收到解析ATP之后也会把TraceId的在整个链路都记录上。在整个分布式应用中把TraceId会沿着调用一直传下去,调用的相关数据记录下来,就可以把所有的链路串起来。

右图:整个Trace的生成方式。调用不是同步的,是分开的。:整个Trace的生成方式。调用不是顺序调用,某一个调用请求完成之
后,下一个应用就继续开始。调用不是同步的,是分开的。这样的话需要我们用TraceId将其串联起来。

本文由社区志愿者整理而成,设区内容志愿者火热招募中,有好礼相赠哦。欢迎加入!戳我了解详情加入!

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
6天前
|
Kubernetes Cloud Native 持续交付
云原生技术浪潮下的微服务架构实践
在数字化转型的今天,云原生技术成为推动企业IT革新的关键力量。本文将通过浅显易懂的语言和实际案例,带领读者了解云原生的核心概念、微服务架构的设计原则以及如何在云平台上高效部署和管理微服务。我们将从基础概念出发,逐步深入到微服务的生命周期管理,探讨如何在云原生生态中实现快速迭代和持续交付。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的指导和思考。
|
11天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的实践与挑战
【8月更文挑战第8天】随着云计算技术的不断成熟,云原生(Cloud Native)已成为推动现代软件开发和运维的关键力量。云原生不仅仅是关于容器化、微服务架构或持续交付的技术实践;它代表了一种文化和方法论的转变,旨在构建可扩展、灵活且高度自动化的应用程序。本文将探讨云原生的核心概念、其在实际开发中的应用以及面临的主要挑战,旨在为读者提供云原生技术实施的全面视角。
|
15天前
|
存储 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群部署实践
【8月更文挑战第4天】本文将带领读者进入云原生的世界,通过实战演练,深入理解如何在云端构建和部署一个 Kubernetes 集群。我们不仅会探讨理论知识,更会通过代码示例,手把手教你从零开始搭建自己的 Kubernetes 环境。无论你是云原生新手,还是希望加深对 Kubernetes 的理解,这篇文章都将是你的不二选择。
|
9天前
|
运维 Cloud Native 安全
云原生技术的未来展望:探索与实践
【8月更文挑战第10天】 在数字化浪潮的席卷下,云原生技术以其灵活性、可扩展性和高效率成为推动现代软件开发和运维革新的关键力量。本文将深入探讨云原生技术的现状,分析其面临的挑战,并展望未来的发展趋势,为读者提供一个关于如何利用云原生技术来构建和优化应用的全面视角。
36 13
|
14天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践
【8月更文挑战第5天】随着云计算技术的飞速发展,云原生架构逐渐成为企业数字化转型的重要推手。本文将深入探讨云原生的核心概念、关键技术以及在现代IT架构中的应用,分析云原生架构如何促进服务的快速迭代和高效运维,同时指出企业在采纳云原生过程中可能面临的挑战及应对策略。
39 7
|
11天前
|
Kubernetes 监控 Cloud Native
云原生时代的微服务架构实践
在数字化转型的浪潮中,企业级应用正经历着从传统架构到云原生微服务架构的转变。本文将深入探讨云原生技术如何赋能微服务架构,实现服务的快速迭代与弹性扩展,并分析微服务拆分的最佳实践和面临的挑战,以及如何利用云原生工具集来构建和管理微服务。我们将通过具体案例,展示如何在云平台上部署和管理微服务,确保系统的高可用性和可维护性,同时提供一套应对常见微服务问题的解决策略。
|
12天前
|
运维 Kubernetes Cloud Native
云原生架构的演进与实践
本文将探讨云原生技术的演变,并分享一些实际的应用案例。我们将从云原生技术的起源开始,然后深入到容器化、微服务等核心技术,最后通过几个实例来展示这些技术是如何在实际中被应用的。
|
15天前
|
运维 Kubernetes Cloud Native
云原生时代的运维革新:容器化与自动化的实践之路
在数字化转型的浪潮中,云原生技术成为企业IT架构演进的核心。本文深入探讨了如何借助容器化技术和自动化工具,实现高效、灵活的运维管理,旨在为读者揭示现代运维面临的挑战及应对策略,同时分享实际案例,展现云原生时代下运维革新的力量。
|
4天前
|
Kubernetes Cloud Native Devops
云原生之旅:从容器化到微服务的实践之路
随着云计算时代的深入发展,传统的软件开发与部署模式已逐渐不能满足现代业务的需求。云原生技术以其灵活性、可扩展性和高效率成为新的发展方向。本文将通过浅显易懂的语言,带领读者一探云原生世界的大门,从容器化技术的起步,到微服务架构的构建,再到DevOps文化的融入,逐步揭示云原生技术如何助力企业快速迭代和高效运维。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你提供有价值的信息和启示。
10 0
|
11天前
|
Cloud Native 持续交付 开发者
云原生技术演进与现代软件开发实践
【8月更文挑战第8天】在数字化浪潮的推动下,云原生技术已成为现代软件开发的核心驱动力。本文将探讨云原生技术的演进如何影响软件开发实践,特别是在提高开发效率、加速部署速度以及增强系统可扩展性方面的作用。文章将通过分析云原生架构的关键组成部分,包括容器化、微服务、持续集成/持续部署(CI/CD)和声明式基础设施,来阐述它们如何共同塑造了现代软件开发的面貌。最后,我们将讨论云原生技术面临的挑战和未来发展趋势。