学习arthas(七)arthas-tunnel-server的摸索

Arthas
placeholder image
admin 发布于:2023-09-30 13:22:52
阅读:loading

1.简单介绍

起初在下决心在开始摸索Arthas时,在GitHub的Release版本下载的链接里有一项名为“arthas-tunnel-server-3.7.1-fatjar.jar”的文件,尽管当初并不知道它是什么,作用是什么,仍然选择了实践arthas。随着实践的深入在掌握一些细节后也逐渐把这块东西的脉路给摸清楚了(非专业的浅见),我所理解arthas-tunnel-server的意思是一种arthas的server服务端,可单独作为arthas的中央服务器与各个项目连接,各个项目中内部集成arthas,无需额外再部署arthas,并以Web Console的方式在线访问,形成一种在线连接管理多个项目的集提继承,由各个项目自己提供arthas,arthas-tunnel-server负责请求命令转发交互。所以,此处奉上两个不专业的arthas应用部署结构图,参考如下:

单击应用结构图.png

(单机应用结构图)

tunnel-server.png

tunnel-server模式系统结构图

2.实践tunnel-server

arthas-tunnel-server最新版本为`arthas-tunnel-server-3.7.1-fatjar.jar`,它是一个基于SpringBoot2.7.11构建的版本项目,可以作为一个arthas的服务端来管理多个arthas客户端项目,并独立,即:可以是单独的服务端,它提供了http的页面控制台,由客户端项目接入该服务端,再从服务端的http页面控制台操作客户端项目的java进程,如下为三台机器的结构:

ip地址

机器智能

说明

    192.168.244.1     

   Windows主机   

   访问 WebConsole,操作139机器的java进程   

    192.168.244.138

Linux

   部署 arthas-tunnel-server

    192.168.244.139

Linux

   部署 自定义程序

(一)启动138机器的server

# 使用后台进程的方式启动,控制台输出的内容按天存储
# nohup java -jar arthas-tunnel-server-3.7.1-fatjar.jar >> ./arthas-tunnel-server-3.7.1-fatjar-$(date +%Y-%m-%d).log 2>&1
java -jar arthas-tunnel-server-3.7.1-fatjar.jar

(二)编写自己的demo程序,本次使用SpringBoot架构,为图简单直接在启动类中增加一个controller,并打包为可执行的jar包,通过xftp上传至139服务器,并启动:

java -jar arthas-boot-1.0-SNAPSHOT.jar

(三)在本机Windows中访问arthas-tunnel-server的http程序,访问地址为“http://192.168.244.138:8080/”,访问的程序界面比直接使用as.sh命令运行的WebConsole多了一个“AgentId”选项,待输入该值后点击“Connect”按钮将提示连接成功,并输出所连接的AgentId指向的Java进程ID,可执行相关的命令并查看对应的结果。

(四)查看arthas-tunnel-server提供的安全监控输出“http://192.168.244.138:8080/actuator,输出数据参考如下图所示:

actuator.png

(五)demo程序的参数配置

spring.application.name=chendd-arthas

server.port=8282

arthas.app-name=${spring.application.name}-name
arthas.agent-id=${spring.application.name}-agent
arthas.tunnel-server=ws://192.168.244.138:7777/ws
arthas.telnet-port=0
arthas.http-port=0

# 开启mbean
server.tomcat.mbeanregistry.enabled=true
spring.jmx.enabled=true

demo.png

(demo程序运行结果)

actuator_arthas.png

arthas-tunnel-server提供的arthas监控输出

actuator_tunnel_server.png

(访问WebConsole后连接的agentId)

3.其它说明

(1)若是监控springboot应用时,采用了maven坐标集成的方式就不能再用./as.sh命令监控本机的方式,会报错“Connect to telnet server error: 127.0.0.1 3658”,应该是内部的端口占用冲突所致吧;

(2)tunnel-server的Web Console比arthas单机监控的Web Console多了一个AgentId的文本框;

(3)完整代码示例下载:《代码示例.zip》;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区