云原生时代的 APM

云原生时代的 APM,第1张

作者 刘浩杨

来源 尔达 Erda 公众号

APM 的全称是 Application Performance Management(应用性能管理),早在 90 年代中期就有厂商提出性能管理的概念,到现在 APM 领域已经发展了近 25 年。

通常而言,APM 的技术已经发展了 3 个阶段,在这里我们可以通过前蓝海讯通(OneAPM)创始人何晓阳在 2014 年分享的《APM 应用性能管理的过去二十年》来回顾一下 APM 的发展 历史 。

1995 年到 2000 年,正是第一代互联网浪潮兴起的年代。当时,雅虎作为互联网公司的代表,引领一代潮流,美国人忙着铺光纤架网线,一个一个的站点被建立了起来。如果说网站的响应速度决定了用户体验的话,那么当时的网速就决定了网站的响应速度,因此,APM 1.0 时代的软件功能就是这么简单:管理网络系统的性能。

时间发展到 2000 年,看过《浪潮之巅》这本书的读者应该会对那个时代有一些印象,当时的 SUN 正处于巅峰时期,市值接近 2000 亿美元,这些公司当时正在疯狂的建设数据中心,购买各种各样的硬件和软件。在这里,我们让顷用一个专业名词来称呼他们,叫做基础组件(Infrastructure)。那么,当时的 APM 系统已经到了第二代,作用是监控和管理各种基础组件的性能。

2005 年以后,随着 Facebook,Twitter 这些应用提供商的兴起,越来越多的 APP 被用来服务全球客户;对于用户来说,他们访问的应用服务可能分布式 的部署在全球的多个数据中心上,尤其是 2010 年以后,新的移动访问方式的兴起,让每一个人的生活方式更加紧密的依赖于各种 Application。在这个时候,应用本身的性能越来越成为制约用户体验提升的瓶颈。这就是第三代 APM 软件的用武之地:第一是管理真实用户的体验,第二是进行端到端的业务交易性能分析。

可以看到,在过去很长一段时间,APM 的重心一直在关注用户体验性能和应用程序性能,随着近年来云计算的兴起,和云原生所倡导的新范式坦前陆,给传统的研发和运维模式带来了新的挑战:微服务、DevOps 等理念让研发变得更高效,但带来的却是海量微服务的问题排查、故障定位的难度变得更大;容器化、Kubernetes 等容器编排技术的逐渐成熟让规模化软件交付变得容易,但带来的挑战是如何更精准地评估容量、调度资源,确保成本与稳定性的最好平衡。

Apple 的工程师 Cindy Sridharan 的博文“监控与观察”(Monitoring and Oberservability)首次将 Oberservability 一词带入开发者的视野。然而,在谷歌,其著名的 SRE 体系在此之前就已经奠定了可观察性的理论基础,也就是说在微服务、可观测性等概念或者出现以前,前辈们将这套理论称为监控,其中 Google SRE 特别强调白盒监控的重要性,而将当时技术圈常用的黑盒监控放在了相对次要的位置。而白盒监控正是应和了可观察性中“主动”的概念。

这里引用一下 Baron SchSchwarz 大咖的一个定义:“监控告诉我们系统的哪些部分是不工作的。可观察性告诉我们那里为什么不工作了。”

由此可见,可观察性是云原生系统中提供稳定性和性能监控、诊断分析的一套理念。和监控相比,可观察性从单一的度量扩展为 Metrics、Tracing、Logging 三大支柱:

在上文中我们提到,可观察性提供了一套理念来监控、诊断云原生应用系统。因此,CNCF 发起了 OpenTelemetry 项目,希望借此统一可观察性三种数据的标准规范和统一的采集实现。但在悔蔽现实世界中,我们更关心的是采集的数据如何被存储和使用。由此,Erda MSP(MicroService Platform)中的应用监控子系统也在逐渐演进为以“可观察性分析诊断 ” 为核心的微服务观测平台。

Erda MSP 当前覆盖从基础设施、业务系统、到端应用的数百种指标和状态采集:

我们也根据监控运维常见的场景和指标,在 Erda 中提供了默认的观测视图:

多云集群状态和资源使用率观测

集群节点指标观测

服务请求和延迟观测

针对于业务系统的慢请求和错误请求,我们集成了 log、trace 和 metric 的关联,让用户可以在很容易的定位到请求的异常上下文信息:

错误请求检索

错误请求和慢请求 Top

慢请求和错误请求下钻分析

exception 分析

exception 下钻关联到 trace 和 log

Erda MSP 支持使用自定义 Dashboard 定制用户自己的分析场景,Dashboard 详细使用参考: 《上手后才知道,这套仪表盘系统用起来是真的爽!》 。

对日志数据的处理,Erda 支持全文检索和结构化标签检索两种方式,并且实现一键关联日志和调用链路的分析能力。

日志关联链路追踪分析

Erda 作为开源的一站式云原生 PaaS 平台,具备 DevOps、微服务观测治理、多云管理以及快数据治理等平台级能力 。点击 下方链接 即可参与开源,和众多开发者一起探讨、交流,共建开源社区。欢迎大家关注、贡献代码和 Star!

skywalking用懂源码可以进大厂吗

懂源码是可以进大厂的

源码也叫源代码、源程序,即编程者(程序员)编写的程序代码,一般都是用高级语好纯言(basic、c等)构成。

源码的作用是程序员不必直接编写晦涩的机器语言,而以团核容易明白的高级语言代替,方便了程序的理解和修改。

源码经过编译,转换为微机可以执行的机器代码,即可以提高程序的运行效率,又可以保护编程者的版权利益!

msgstr 在你的程序里面是个字符串,根据不同的情况,得到不同的msgstr ,<br>alert msgstr <br>这句才是d出对话友或咐框,在这里msgstr是个参数!<br>alert "你好"<br>和这个是一样的道理,只不过msgstr 在这里是变量

APM飞控程序是开源的,我们可以对某一版本的APM飞控程序进行修改做二次开发。当对APM程序二次开发完成后就要将修改的APM程序编译上传到APM飞控板子中。下面就是介绍如何使用“ArduPilot-Arduino-1.0.3-windows”编译、上传APM程序。

1,下载APM飞控程序编译环境(IDE)--“ArduPilot-Arduino-1.0.3-windows”,注意不要使用其他版本的Arduino编译环境。

2,下载一个APM飞控程序,例如:ArduPlane-2.75。另外“ArduPilot-Arduino-1.0.3-windows”文件夹与飞控程序文件夹放在一个文件夹中,文件夹的命名最好都是用英文。

3,使用“ArduPilot-Arduino-1.0.3-windows”时,打开该文件夹,直接双击“arduino”图标使用,无需安装。“ArduPilot-Arduino-1.0.3-windows”的设置:

tool-->board: Arduino mega 2560 or mega ADK

tool-->programmer: AVRISP mkII

ArduPilot-->: HAL board: Ardupilot mega 2.X(现在使用的APM2.0-2.5-2.6等)

File-->reference-->Sketchbook 选为要编译的飞控程序文件夹,每次更改后点OK,并关掉Arduino 1.0.3 再打开,这时再好型选File-->Sketchbook中一项进行编译。

例如,对File-->Sketchbook中友戚猜ArduPlane进行编译,点击工具栏中“对号”图标开始编译,没有错误大约1分钟就能编译结束。编译完成之后将APM通过数据线连接到电脑上(编译时就连接也可以),选择Board-->serial-port 选择APM的接口。之后点击工具栏的“向右箭头”图标将编译好的程序写进APM,这样就完成了一次对APM飞控程序的刷新。

现在的APM飞仔洞控程序不经删减,编译后的大小很容易超过248KB(256KB总内存-8KB的Bootloader占用内存),当编译后大于248KB时不能上传到APM中否则会破坏APM的bootloader.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12469288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存