【Java】Arthas使用的各类方式
Arthas使用的各类方式
Montos发布于 1 月 27 日
前言
方案介绍
方案一 本地直接运行
- 我们可以直接通过官网下载对应的
jar
,然后运行再进行jar
再执行对应的命令。 - 命令如下:
java -jar arthas-boot.jar [option]
- 演示如下:
方案二 Web Console实现
- 通过下载arthas-tunnel-server。我们可以拿到对应的
arthas
的server
端。下载完毕之后直接运行即可(我是将其在ECS上直接运行)。
- 在客户端对应的启动
arthas-boot
。并且通过启动参数附加上server
的地址(我是将其在本地运行)。
- 选择对应的进程进行
attach
,会出现对应的agent-id
,再将其填写到对应的server
端http
页面中。
- 最后我们就可以再
server
端进行操作,即Web Console
实现完成。
方案三 项目依赖
SpringBoot
项目依赖:
<dependency><groupId>com.taobao.arthas</groupId>
<artifactId>arthas-spring-boot-starter</artifactId>
<version>${arthas.version}</version>
</dependency>
- 非
SpringBoot
项目依赖:
<dependency><groupId>com.taobao.arthas</groupId>
<artifactId>arthas-agent-attach</artifactId>
<version>${arthas.version}</version>
</dependency>
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-packaging</artifactId>
<version>${arthas.version}</version>
</dependency>
- 本地项目启动之后可以直接访问:
http://127.0.0.1:3658/
- 当然还可以结合上面介绍的
Web Console
。例如配置文件中增加对应的配置信息:
arthas.agent-id=qwejqjnnnunnqarthas.tunnel-server=ws://server地址:7777/ws
- 演示如下:
以上步骤就是先把tunnel-server
启动,然后本地配置连接tunnel-server
。然后输入配置的Id
,即可完成对应的调试。
方案四 容器配置
这里介绍下通过Dockerfile
进行构建:
FROM openjdk:8-jdk-alpineADD target/*.jar app.jar
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
RUN apk add --no-cache tini
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
MAINTAINER Montos [email protected]
上述是通过构建Dockerfile
来完成的,这里就直接将镜像文件贴出来,这里是将当前arthas
中的文件复制到对应的容器中,之后我们可以通过exec -it
进入执行,步骤和方法一类似。
总结
- 在服务直接部署在服务器上或者
ECS
云服务器情况下。我们可以直接运行在对应的client
端,但是我们如何上到各个服务所在的服务器上?通过跳板机?那么我们是不是操作的时候会有可能对应服务器造成影响,直接连接服务器上是肯定不行的。 - 服务在所运行的
pod
情况下。此时让你连接服务是影响是比上面的情况会小很多,如果发生影响也只是影响到当前运行的pod
。但是如果你想直接连接pod,那么需要的将对应的pod端口需要映射到对应的宿主机上,然后再提供外部访问ecs
的链接。这样会使得每次pod需要映射出去的端口需要一定的规则,无疑是加大了运维等工作,运行则也消耗了当前的资源(访问页面等等则走http接口请求,如果通过ws连接,减少7层方面消耗)。 - 如果通过上述方法,那么我们可以再一台机器上运行
server
即可,我们每次访问都通过访问server
去连接到到对应的client
端,同时对应的agent-id
可以指定,我们可以每次pod进行client
运行的时候指定当前的agent-id
,让其与当前的pod
进行一个绑定,便于我们通过server
进行连接。
阅读 55发布于 1 月 27 日
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
Montos
_
1 声望
0 粉丝
Montos
_
1 声望
0 粉丝
宣传栏
前言
方案介绍
方案一 本地直接运行
- 我们可以直接通过官网下载对应的
jar
,然后运行再进行jar
再执行对应的命令。 - 命令如下:
java -jar arthas-boot.jar [option]
- 演示如下:
方案二 Web Console实现
- 通过下载arthas-tunnel-server。我们可以拿到对应的
arthas
的server
端。下载完毕之后直接运行即可(我是将其在ECS上直接运行)。
- 在客户端对应的启动
arthas-boot
。并且通过启动参数附加上server
的地址(我是将其在本地运行)。
- 选择对应的进程进行
attach
,会出现对应的agent-id
,再将其填写到对应的server
端http
页面中。
- 最后我们就可以再
server
端进行操作,即Web Console
实现完成。
方案三 项目依赖
SpringBoot
项目依赖:
<dependency><groupId>com.taobao.arthas</groupId>
<artifactId>arthas-spring-boot-starter</artifactId>
<version>${arthas.version}</version>
</dependency>
- 非
SpringBoot
项目依赖:
<dependency><groupId>com.taobao.arthas</groupId>
<artifactId>arthas-agent-attach</artifactId>
<version>${arthas.version}</version>
</dependency>
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-packaging</artifactId>
<version>${arthas.version}</version>
</dependency>
- 本地项目启动之后可以直接访问:
http://127.0.0.1:3658/
- 当然还可以结合上面介绍的
Web Console
。例如配置文件中增加对应的配置信息:
arthas.agent-id=qwejqjnnnunnqarthas.tunnel-server=ws://server地址:7777/ws
- 演示如下:
以上步骤就是先把tunnel-server
启动,然后本地配置连接tunnel-server
。然后输入配置的Id
,即可完成对应的调试。
方案四 容器配置
这里介绍下通过Dockerfile
进行构建:
FROM openjdk:8-jdk-alpineADD target/*.jar app.jar
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
RUN apk add --no-cache tini
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
MAINTAINER Montos [email protected]
上述是通过构建Dockerfile
来完成的,这里就直接将镜像文件贴出来,这里是将当前arthas
中的文件复制到对应的容器中,之后我们可以通过exec -it
进入执行,步骤和方法一类似。
总结
- 在服务直接部署在服务器上或者
ECS
云服务器情况下。我们可以直接运行在对应的client
端,但是我们如何上到各个服务所在的服务器上?通过跳板机?那么我们是不是操作的时候会有可能对应服务器造成影响,直接连接服务器上是肯定不行的。 - 服务在所运行的
pod
情况下。此时让你连接服务是影响是比上面的情况会小很多,如果发生影响也只是影响到当前运行的pod
。但是如果你想直接连接pod,那么需要的将对应的pod端口需要映射到对应的宿主机上,然后再提供外部访问ecs
的链接。这样会使得每次pod需要映射出去的端口需要一定的规则,无疑是加大了运维等工作,运行则也消耗了当前的资源(访问页面等等则走http接口请求,如果通过ws连接,减少7层方面消耗)。 - 如果通过上述方法,那么我们可以再一台机器上运行
server
即可,我们每次访问都通过访问server
去连接到到对应的client
端,同时对应的agent-id
可以指定,我们可以每次pod进行client
运行的时候指定当前的agent-id
,让其与当前的pod
进行一个绑定,便于我们通过server
进行连接。
以上是 【Java】Arthas使用的各类方式 的全部内容, 来源链接: utcz.com/a/109322.html
得票时间