[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda

Posted 大象无形,大音希声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda相关的知识,希望对你有一定的参考价值。

很早就想使用Arthas结合Camunda一起来玩玩。那么什么是Arthas呢?
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

  • 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  • 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到JVM的实时运行状态?
  • 怎么快速定位应用的热点,生成火焰图?
  • 怎样直接从JVM内查找某个类的实例?

Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

首先到https://arthas.aliyun.com/arthas-boot.jar 这个地址把Arthas下载下载。然后通过下面的命令启动。

java -jar arthas-boot.jar

启动后其会扫描当前电脑上所有的java应用程序,果然扫描到了camunda的应用程序。

然后我输入 1 进行启动。就进入了Arthas的控制台。在命令行输入:dashboard

dashboard

其会一直刷新Camunda的运行时候的信息。
按下Ctrl +C 终止其Dashboard的刷新。在Arthas的控制台下输入 thread,其会输出所有的线程信息。

thread


在arthas的命令行里面输入一个具体的线程号,比如thread 25

[arthas@5336]$ thread 25
"Camunda BPM Runtime Telemetry Reporter" Id=25 TIMED_WAITING on java.util.TaskQueue@35bbf8fa
    at java.base@15.0.2/java.lang.Object.wait(Native Method)
    -  waiting on java.util.TaskQueue@35bbf8fa
    at java.base@15.0.2/java.util.TimerThread.mainLoop(Timer.java:553)
    at java.base@15.0.2/java.util.TimerThread.run(Timer.java:506)

可以看到当前的线程是一个TaskQueue的监听应用。
Arthas里面默认就按照了Jad,可以直接对上面的类进行代码反汇编。比如输入下面的代码

jad java.util.TaskQueue

其输出如下:

我们看到Java Class字节码是可以反编译的。查看类里面的方法:

sm java.util.TaskQueue


输入quit 或者exit 推出 arthas

[arthas@5336]$ quit
E:\\2022-Learning>

值得一提的是,可以直接输入 http://127.0.0.1:8563/ 进入Arthas的Web控制台,使用方式和命令行一模一样~

以上是关于[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda的主要内容,如果未能解决你的问题,请参考以下文章

[5]深入浅出工作开源框架Camunda: 解读 camunda-webapp 笔记

[1]深入浅出工作开源框架Camunda: 安装和使用

[3] 深入浅出工作开源框架Camunda: Camunda 切换到MySQL数据库

[2]深入浅出工作开源框架Camunda: Camunda Modeler功能增强插件

[7]深入浅出工作开源框架Camunda: camunda-webapp 用户登录功能代码分析

[7]深入浅出工作开源框架Camunda: camunda-webapp 用户登录功能代码分析