Arthas分布式部署踩坑经验及保姆及教程

Arthas-TunnelServer踩坑及保姆级教程

前言

这几天一直在学习+研究arthas。其中就想到一些问题,这玩意怎么做分布式,怎么在一台机器监听多个进程。然后开始扒官方文档,虽然官方文档有说明,但是有些细节还是没有写的特别详细。目前我有一些阶段性的成果和总结,分享出来。希望对同学们有帮助。

服务端部署

从maven下载tunnel-server jar包。需下载 fatjar。

下载artifactId:arthas-tunnel-server

启动server

java -jar  arthas-tunnel-server.jar 
客户端部署

从maven下载客户端包。
下载artifactId:arthas-packaging即可。

解压即用

单机版

  1. java -jar arthas-boot.jar 或者 执行 as.sh
  2. 选择进程id即可开始进入监听。

优点:操作简单,想看哪台的哪个进程,重复操作即可。
缺点:安全性不高,开发人员没有服务器登录权限时就很难这么做了。
如果只是临时使用这也何尝不是好方案呢,实际情况怎么方便怎么来就行。

分布式

如果要做一个统一的管理,统一维护就可以看看分布式架构是怎么玩的。
简单的架构图
在这里插入图片描述
每个节点需要装一下刚刚下载的arthas-package
具体操作命令:

./as.sh --tunnel-server 'ws://localflume:7777/ws' 
ws://localflume:7777/ws 这个是 tunnel-server的注册地址。tunnel-server安装在哪个节点,就用那个节点的hostname或者ip即可。这块很好理解。

此处有可能启动失败,需要安装telnet服务。a.sh 和 java -jar arthas-boot.jar是一样的,任意选就可以。
这个是一个节点一个进程的,都是默认配置。单个节点多进程的也很简单,加参数就行。

./as.sh --tunnel-server 'ws://localflume:7777/ws' --telnet-port 9994  --http-port -1 
--telnet-port 9994 
--http-port -1 
telnet-port 默认是 3658 http-port 默认是 8563,在同一台机器里这俩端口一定不能冲突。如果前面已经启动了一个默认的arthas-client,那后面每起一个client都要去修改这俩端口,保证这俩端口是未被其他进程给占用。

启动后选择要监听的进程pid就可以了。arthas是针对进程去监听的,所以进程和client是1对1的关系。有多少个进程就需要多少个client。

Tunnel-ServerWebUI

tunnel-server启动后可以访问他的webui。默认端口是8080
在这里插入图片描述
三个输入栏一个是IP,Port,AgentId。前两个好理解,就是tunnel-server的ip和开放出来的ws的port。第三个是每个arthas-client成功连接到进程后会自动生成一个agent-id。如图:
在这里插入图片描述
输入agentId,即使在client里长时间为操作退出或者quit退出后都能从webui中重新attach。与http方式不同此方式是长连接,超时退出也依然保持session。

查看Tunnel-Server中已注册的Client列表

http://localflume:8080/actuator/arthas

可以登录这个地址查看当前列表。用户名为 arthas,密码去tunnel-server的日志中找。日志中会生成密码如图:
在这里插入图片描述
登陆后可查看当前已注册的client列表。如图:
在这里插入图片描述

管理AgentID

一般情况下让agent-id 自动生成即可。但是假设以下场景下怎么去使用就存在问题了。
场景:
1.不开放服务器登录权限。让调试人员只想在webui中去排查和诊断。(对于arthas来说在shell中用命令attach和webui中操作是完全一致的,大部分的公司也权限管理的也很严格,能不让开发直连就尽量避免这种情况)
2.进程重启再重新启动arthas-client时agentid会被重新生成。
基于这两个场景可以预设agent-id。针对某个项目,进程预先设计好agentid。每次启动的时候 加上–agent-id 参数即可。

./as.sh --tunnel-server 'ws://localflume:7777/ws' --telnet-port 9994  --http-port -1 
--telnet-port 9994 --agent-id thisistest

事先把agentid发给相关人员,运维重新发布项目、重启项目、宕机重启都不怕了,调试员只需要记住自己项目的agentid即可。

扩展

arthas的这种架构还是蛮舒服的,可以随意的横向扩展。但是像tunnel-server是单机的节点和进程一多肯定会出现瓶颈问题,这时候就考虑用nginx做一个负载了,这样server也可以横向扩展了。这属于arthas集群的解决方案了。这块我也没有实际扩展到这么多,条件允许的同学可以试试。

总结

以上是我在使用arthas的时候一些踩坑的经验分享,其实也算刚入门同学的保姆及教程了。如果有漏掉或者有不同意见的评论区指出来,我写出来的不一定是完全准确,探讨探讨,有问题我再纠正。后续也会分享一些关于arthas相关的经验分享。感谢支持!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最后一根头发

努力分享自己的经验谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值