Arthas Tunnel
内容来源:https://arthas.aliyun.com/doc/tunnel.html
本文档结合:【Arthas 监控服务(直接在服务器运行)】一起看
通过 Arthas Tunnel Server/Client 来远程管理/连接多个 Agent。
比如,在流式计算里,Java 进程可以是在不同的机器启动的,想要使用 Arthas 去诊断会比较麻烦,因为用户通常没有机器的权限,即使登陆机器也分不清是哪个 Java 进程。
在这种情况下,可以使用 Arthas Tunnel Server/Client。
部署 arthas tunnel server
- Arthas tunnel server 是一个 spring boot fat jar 应用,直接
java -jar
启动:
java -jar -Dserver.port=8080 -Darthas.server.port=7777 arthas-tunnel-server-3.7.1-fatjar.jar
默认情况下,arthas tunnel server 的 web 端口是8080
,arthas agent 连接的端口是7777
。
Dserver.port:访问arthas服务端的端口
Darthas.server.port:用于应用端上报数据的端口
- 开启防火墙的端口:8080(与
Dserver.port
配置的内容一致)、7777(与Darthas.server.port
配置的内容一致)端口
启动之后,可以访问 http://127.0.0.1:8080/ 在新窗口打开 ,再通过agentId
连接到已注册的 arthas agent 上。
通过 Spring Boot 的 Endpoint,可以查看到具体的连接信息: http://127.0.0.1:8080/actuator/arthas 在新窗口打开,登陆用户名是arthas
,密码在 arthas tunnel server 的日志里可以找到,比如:
32851 [main] INFO o.s.b.a.s.s.UserDetailsServiceAutoConfiguration
Using generated security password: f1dca050-3777-48f4-a577-6367e55a78a2
启动 arthas 时连接到 tunnel server
-
在项目中增加
arthas-spring-boot-starter
依赖<dependency> <groupId>com.taobao.arthas</groupId> <artifactId>arthas-spring-boot-starter</artifactId> <version>3.7.1</version> </dependency>
-
项目中配置tunnel server地址信息,并配置当前应用的唯一标识
arthas: agent-id: sgs-back # 当前应用的名词,需要唯一 tunnel-server: ws://192.168.99.243:7777/ws # arthas服务端的地址
-
启动服务
-
访问 arthas tunnel server (最好要用Chrome),并输入AgentId,也就是刚才配置的 agent-id,点击connect,就可以连上啦
注意点
提示
注意,agentId 要保持唯一,否则会在 tunnel server 上冲突,不能正常工作。
如果 arthas agent 配置了 appName
,则生成的 agentId 会带上appName
的前缀。
比如在加上启动参数:as.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name demoapp
,则生成的 agentId 可能是demoapp_URJZ5L48RPBR2ALI5K4V
。
Tunnel server 会以_
做分隔符,提取出appName
,方便按应用进行管理。
提示
另外,也可以在解压的 arthas 目录下的
arthas.properties
,或者在 spring boot 应用的application.properties
里配置appName
。