首先,Jarboot可以启动、停止、守护、诊断本地服务器上的Java进程,同时也已经支持远程服务器上的进程连接到某一台服务启动上的Jarboot的服务上。
这样做可以使用一个Jarboot服务来诊断其他若干台服务器上的Java服务。
简介
Jarboot示例图,如下为本地管理的服务进程:
在线调试的诊断功能
切换到【在线调试】菜单界面后,会显示未受管理的本地进程和远程进程,未受管理指的是:不是由Jarboot来启动的进程。
一个Java进程不管是否由Jarboot来启动都可以使用它来诊断。如下图,在线调试界面:
集群服务如何连接到远程服务上的Jarboot呢?
这个过程不需要改动任何业务代码,完全无侵入式的。只需要在java启动命令中加上几条参数就可以了。
启动命令修改方法:
java -Djarboot.remote=192.168.1.59:9899 -Djarboot.name=demo_test -javaagent:/jarboot所在路径/jarboot/bin/jarboot-agent.jar -jar demo-server.jar
- 第一部分:指定要连接的Jarboot的服务的地址;
- 第二部分(可选):指定自己的名称,该名称会显示在【在线调试】列表中,若未指定则默认使用jar文件名或类名
- 第三部分:指定javaagent,jarboot-agent.jar的路径,保证jarboot文件的完整性,在客户端模式下jarboot-server.jar不需要;
只需将上述参数额外附加到已有项目的启动命令上即可实现连接。
使用jt脚本的方法:
使用jt.cmd或jt.sh脚本启动
#使用本地Jarboot服务地址异步非阻塞启动
sh jt.sh -async -jar demo.jar
#指定Jarboot服务地址
sh jt.sh -h 192.168.1.59:9899 -async -jar demo.jar
#同步阻塞启动
sh jt.sh -sync -jar demo.jar
sh jt.sh -h 192.168.1.59:9899 -sync -jar demo.jar
使用Docker
使用Docker的服务也是一样的修改启动命令,如下示例:
FROM openjdk:17-jdk-alpine
EXPOSE 9899
ENV JARBOOT_VERSION 2.0.0
#Jarboot的完整包
COPY jarboot /jarboot
COPY demo-server.jar /demo-server.jar
#指定环境变量
ENV JARBOOT_HOME /jarboot
#指定jarboot.remote、jarboot.name和jarboot-agent.jar
ENTRYPOINT ["java","-Djarboot.remote=192.168.1.59:9899","-Djarboot.name=demo","-javaagent:/jarboot/bin/jarboot-agent.jar","-jar","/demo-server.jar"]