“应用观测器”支持在不重新发布应用的情况下,实时添加日志并查看输出;观测线程执行堆栈和上下文变量,而不会阻塞程序的执行;统计代码行执行次数和方法执行耗时。
前提条件
目前仅支持观测 Java 应用(JDK >= 1.7);
不能跟Java 远程调试同时使用(即不能跟 -agentlib:jdwp 同时使用)
Java 应用需要运行在 Linux (Ubuntu 12+ 、Debain 7+ 、Centos 6+ 或其他等同的Linux发行版) 环境上,glibcxx 版本 >= 3.4.15;
本地可以通过 SSH 连上 Java 应用所在的服务器;
加入文档底部的公测群,获取 Cloud Toolkit 插件最新离线安装包;
使用步骤
1. 在 IDEA 右侧工具栏中找到“应用观测器”页签栏,根据你的 Java 工程所在的运行环境,选择适合你的开启方式。
2. (以 Host 为例)选择对应的 Host,点击“应用观测”按钮;根据提示选择目标进程。如尚未添加 Host,请先添加 Host。(注意:应用观测器的使用依赖 Java Agent 注入 JVM 进程,首次使用时会在目标服务器上自动下载 agent 并重启应用)
3. 成功开启后,可以在右侧面板中查看概览信息,在某行代码上右键添加观测点。
4. 当观测点有命中记录后,点击编辑器中的观测点图标查看详细信息。
观测点类型
目前插件中共提供4种类型的观测点,分别使用不同的 icon 表示。
1. 日志
日志类型的观测点可以在代码行中动态的添加日志表达式,添加后不需要重新发布应用,当程序运行过对应的代码行时,即可在插件端查看日志记录;同时,日志也会输出到 Java 进程的标准输出里。日志类型的观测点在删除前会一直生效,只要程序执行到该行代码时,自动输出记录。
关于添加日志观测点时的属性说明:
格式:日志格式,可以使用 {} 观测自定义表达式,如:{token},{getName()};
日志等级:支持 INFO、WARNING、ERROR 三种日志等级;
条件:记录日志的条件,只有当条件表达式为 true 时,才会打印日志;
2. 快照(又名:虚拟断点)
快照类型观测点可以非阻塞的捕获代码执行时的堆栈,同时支持查看方法内部的变量值。快照类型的观测点只会触发1次记录。
关于添加快照观测点的属性说明:
条件:记录快照的条件,只有当条件表达式为 true 时,才会记录快照;
表达式:在程序执行到快照点时,需要额外记录的表达式的值;
3. 计数器
计数器观测点可以统计该行代码的执行次数。计数器观测点在手动删除前会一直生效,只要程序执行到该行代码时,自动输出记录。
4. 方法执行耗时
方法执行耗时观测点可以统计该方法的执行耗时。该类型的观测点在手动删除前会一直生效,只要程序执行过该方法,自动输出记录。
关于方法执行耗时观测点输出的说明:
最小值:在观测点添加后,该方法执行的最短时间(单位:ms);
最大值:在观测点添加后,该方法执行的最长时间(单位:ms);
平均值:在观测点添加后,该方法执行的平均时间(单位:ms);
关于观测点状态的说明
观测点共有4种状态,分别为用4种颜色标识:
未注册(用黄色图标表示):观测点尚未注册到服务端;
已注册(用绿色图标表示):观测点已注册(或正在注册)至 Java 工程中;
注册异常(用红色图标表示):观测点在注册到 Java 工程时出现异常;
已注册,并且有新的触发记录(用绿色图标表示,并且在图标右上角有小红点):Java 程序执行过观测点所在行,并且触发信息已被应用观测器捕获;
如何开始使用?
当前,应用观测器功能处于公测阶段,可以在最新版的 Cloud Toolkit for IDEA 中找到该功能。如果在使用中有任何疑问,请加钉钉群反馈,群号:34965379。
FAQ
1. 问:在 IDEA 插件上开启观测后,提示“应用观测器启动失败,请稍后重试”。
答:请参考使用前提条件,依次检查 JDK版本、是否同时开启了远程调试(jdwp)、glibcxx 版本;如还未解决,请加上方的钉钉群反馈。