线上Bug照妖镜——应用观测器(App Observer)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 应用观测器(App Observer)是一款代码行级别的实时非阻塞应用调试工具,其动态日志、非阻塞断点与实时Metrics功能可以让你轻松在线上系统完成对问题的排查与实时观测。

(全文约1700字,阅读时间约5分钟)

随着业务的发展,程序逻辑会变得越来越复杂,为了保证线上系统不出 Bug,我们可能做了很多努力。但是,谁又能保证不出线上 Bug 呢?

唉!世界上最痛苦的是:工作还在,奖金没了。只有尽快解决才能挽救年终奖。然而世界上最遥远的距离就是可以调试的本地和出现 Bug 的线上。那么面对一些系统,既不能打断点调试,Bug 又无法在本地复现,我们该如何解决?

接下来,我们就来讨论一下这一富有挑战性的工作。

假如生产环境有个 Bug


调查线上问题,我们首先会借助于 Log、Tracing 和 Metrics。对于简单的报错,查 Log 就能解决。对于复杂的系统调用和逻辑错误,可能要借助于 Tracing 查看上下文。调查性能问题,查看 Metrics 会更有帮助。

如果通过上述手段就已经定位到了问题,是很幸运的。但有时我们会发现关键的位置缺少了日志,没法准确的获知代码运行情况,这会极大阻碍我们清晰的定位问题。

缺少日志只能补上,再发布一次。对于大多数应用系统来说,发布一次的时间成本是不低的,从数分钟到数小时不等。补日志的过程来上几次,要耗费很多心力,同时也要顶住不小的业务侧的压力。所以生产系统上发现了 Bug,找起来通常很不容易。

有没有更好的方法?


和稍有经验的同事讨论,相信他一定会给你推荐 Arthas。Arthas 相比与远程 Debug,对于环境的依赖更少,也不会因为打断点而阻塞业务请求。但是如果你不是一个运维老炮,那当线上问题发生了,求助于Arthas,你可能会发现短时间内不知从何入手,Arthas 大概有30+ 子命令,每个子命令都有一系列的参数。

有没有一款工具,即像远程 Debug 一样操作简便,又像 Arthas 那样对生产环境的要求和影响都比较小?答案是:当然!这款工具正是本文要向大家介绍的应用观测器(App Observer),一款代码行级别的实时非阻塞应用调试工具。



应用观测器(App Observer)


动态日志 —— 即时添加,即时生效


在排查问题时,你是否后悔过当初忘记打印日志?有了动态日志,再也不会有这样的烦恼。动态日志的生效过程,不需要重启应用程序,做到了“即时添加,即时生效”。添加动态日志时,可以使用条件表达式控制日志的打印与否,还可以在日志表达式中观测变量值。在整个过程中,动态日志不会改变原有的代码行数,不影响通过原日志系统排查问题。


非阻塞断点 —— 让你像 Debug 一样排查问题


非阻塞断点在问题排查上,比动态日志跟进一步。最显著的增强点在于可以观测程序的执行堆栈,让程序的调用链路一目了然。此外,在观测变量值方面,可以一步到位,自动观测函数体内的所有变量。所有的观测行为,都不会阻塞程序的执行,真正做到了似断点又非断点。


实时 Metrics —— 清爽易用的性能统计工具


实时 Metrics 用于辅助排查程序的性能问题,不需要添加非业务代码,在保持了程序逻辑清爽的同时,完成了统计观测:

  • 计数器:用于统计某一行代码的执行次数;
  • 方法执行耗时:用于统计函数体的执行耗时;

获取方式


应用观测器(App Observer)是Alibaba Cloud Toolkit for IntelliJ 插件的一部分,已经随着 2021.11.1 版本的插件上架插件市场:https://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit。已经安装 IntelliJ IDEA 的开发者也可以在 IDEA 的插件市场搜索 “Alibaba Cloud Toolkit” 进行安装。

详细的使用方式,可以参考官方的使用文档:https://help.aliyun.com/document_detail/326231.html


未来可期


支持更多的 Platform 和 Runtime


当前应用观测器仅支持 Java 应用,接下来我们会增加更多语言的支持。当前发布版本也仅支持观测运行在 Linux 中的应用服务,后续会逐步支持观测 Windows 下的应用程序。


云端控制台


当前应用观测器采用了插件直连应用的模式,在网络通路上我们借到了 SSH。这需要假设用户有 SSH 访问权限。接下来我们计划提供一个云端服务。有了云端服务后,可以把观测数据给记录下来,绘制成图表,方便用户在较大的时间尺度上了解服务健康状况。同一个应用下不同开发者添加的观测点也可以相互看到,会成为一种运维协作的新方式。


云原生应用平台集成


当前,在首次使用应用观测器时,有一个添加 Java Agent 参数并重启的过程。对于云原生应用来说,应用观测的能力,最好是与生俱来的。所以应用观测器这类工具,势必会成为云原生应用的 Sidecar。我们后续会和 ACK 服务、Serverless 服务、SAE 服务进行集成,让云原生用户能使用上开箱即用的实时应用观测能力。


联系方式


关于应用观测器的任何问题,都可以加入钉钉群(群号:34965379)寻求帮助,后续的新特性也会在钉钉群里进行更新。

此外,也欢迎把您遇到的问题反馈至我们的 Github Issue 空间:https://github.com/alibaba-cloud-toolkit/cloud-toolkit-jetbrains/issues


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10天前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
137 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
25天前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
116 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
9天前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
776 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
15天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
115 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
36 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
11天前
|
供应链 数据挖掘 API
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
61 8
|
29天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
132 12
|
2月前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
248 6
|
3月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
4月前
|
机器学习/深度学习 搜索推荐 数据挖掘
北邮移动互联网应用大作业实验报告《云账本app》开发
北邮移动互联网应用大作业实验报告《云账本app》开发
67 0

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作