共计 2119 个字符,预计需要花费 6 分钟才能阅读完成。
随着业务的倒退,程序逻辑会变得越来越简单,为了保障线上零碎不出 Bug,咱们可能做了很多致力。然而,谁又能保障不出线上 Bug 呢?
唉!世界上最苦楚的是:工作还在,奖金没了。只有尽快解决能力解救年终奖。然而世界上最边远的间隔就是能够调试的本地和呈现 Bug 的线上。那么面对一些零碎,既不能打断点调试,Bug 又无奈在本地复现,咱们该如何解决?
接下来,咱们就来讨论一下这一富裕挑战性的工作。
如果生产环境有个 Bug
考察线上问题,咱们首先会借助于 Log、Tracing 和 Metrics。对于简略的报错,查 Log 就能解决。对于简单的零碎调用和逻辑谬误,可能要借助于 Tracing 查看上下文。考察性能问题,查看 Metrics 会更有帮忙。
如果通过上述伎俩就曾经定位到了问题,是很侥幸的。但有时咱们会发现要害的地位短少了日志,没法精确的获知代码运行状况,这会极大妨碍咱们清晰的定位问题。
短少日志只能补上,再公布一次。对于大多数利用零碎来说,公布一次的工夫老本是不低的,从数分钟到数小时不等。补日志的过程来上几次,要消耗很多心力,同时也要顶住不小的业务侧的压力。所以生产零碎上发现了 Bug,找起来通常很不容易。
有没有更好的办法?
和稍有教训的共事探讨,置信他肯定会给你举荐 Arthas。Arthas 相比与近程 Debug,对于环境的依赖更少,也不会因为打断点而阻塞业务申请。然而如果你不是一个运维老炮,那当线上问题产生了,求助于 Arthas,你可能会发现短时间内不知从何动手,Arthas 大略有 30+ 子命令,每个子命令都有一系列的参数。
有没有一款工具,即像近程 Debug 一样操作简便;又像 Arthas 那样对生产环境的要求和影响都比拟小?答案是:当然!这款工具正是本文要向大家介绍的利用观测器(App Observer),一款代码行级别的实时非阻塞利用调试工具。
Cloud Toolkit 云插件:
集开发、测试、诊断、部署为一体的收费本地 IDE 插件,帮忙开发者真正实现一键式研发部署。晋升研发部署速度数倍以上,大幅升高研发老本。
利用观测器(App Observer)
因为平台限度,该局部具体性能动作详情,大家能够点击【线上 Bug 照妖镜——利用观测器(App Observer)】理解详情;
动静日志 —— 即时增加,即时失效
在排查问题时,你是否悔恨过当初遗记打印日志?有了动静日志,再也不会有这样的懊恼。动静日志的失效过程,不须要重启应用程序,做到了“即时增加,即时失效”。增加动静日志时,能够应用条件表达式管制日志的打印与否,还能够在日志表达式中观测变量值。在整个过程中,动静日志不会扭转原有的代码行数,不影响通过原日志零碎排查问题
非阻塞断点 —— 让你像 Debug 一样排查问题
非阻塞断点在问题排查上,比动静日志跟进一步。最显著的加强点在于能够观测程序的执行堆栈,让程序的调用链路高深莫测。此外,在观测变量值方面,能够一步到位,主动观测函数体内的所有变量。所有的观测行为,都不会阻塞程序的执行,真正做到了似断点又非断点。
实时 Metrics —— 清新易用的性能统计工具
实时 Metrics 用于辅助排查程序的性能问题,不须要增加非业务代码,在放弃了程序逻辑清新的同时,实现了统计观测:
- 计数器:用于统计某一行代码的执行次数;
- 办法执行耗时:用于统计函数体的执行耗时;
获取形式
利用观测器(App Observer)是 Alibaba Cloud Toolkit for IntelliJ 插件的一部分,曾经随着 2021.11.1 版本的插件上架插件市场:https://plugins.jetbrains.com…。曾经装置 IntelliJ IDEA 的开发者也能够在 IDEA 的插件市场搜寻“Alibaba Cloud Toolkit”进行装置。
具体的应用形式,能够参考官网的应用文档:https://help.aliyun.com/docum…
将来可期
反对更多的 Platform 和 Runtime
以后利用观测器仅反对 Java 利用,接下来咱们会减少更多语言的反对。以后公布版本也仅反对观测运行在 Linux 中的应用服务,后续会逐渐反对观测 Windows 下的应用程序。
云端控制台
以后利用观测器采纳了插件直连利用的模式,在网络通路上咱们借到了 SSH。这须要假如用户有 SSH 拜访权限。接下来咱们打算提供一个云端服务。有了云端服务后,能够把观测数据给记录下来,绘制成图表,不便用户在较大的时间尺度上理解服务健康状况。同一个利用下不同开发者增加的观测点也能够互相看到,会成为一种运维合作的新形式。
云原生利用平台集成
以后,在首次应用利用观测器时,有一个增加 Java Agent 参数并重启的过程。对于云原生利用来说,利用观测的能力,最好是与生俱来的。所以利用观测器这类工具,势必会成为云原生利用的 Sidecar。咱们后续会和 ACK 服务、Serverless 服务、SAE 服务进行集成,让云原生用户能应用上开箱即用的实时利用观测能力。
此外,也欢送把您遇到的问题反馈至咱们的 Github Issue 空间:https://github.com/alibaba-cloud-toolkit/cloud-toolkit-jetbrains/issues