【Java】Arthas使用的各类方式

Arthas使用的各类方式

Montos发布于 1 月 27 日

【Java】Arthas使用的各类方式

前言

方案介绍

方案一    本地直接运行

  1. 我们可以直接通过官网下载对应的jar,然后运行再进行jar再执行对应的命令。
  2. 命令如下:

java -jar arthas-boot.jar [option]

  1. 演示如下:

【Java】Arthas使用的各类方式

方案二    Web Console实现

  1. 通过下载arthas-tunnel-server。我们可以拿到对应的arthasserver端。下载完毕之后直接运行即可(我是将其在ECS上直接运行)。

【Java】Arthas使用的各类方式

  1. 在客户端对应的启动arthas-boot。并且通过启动参数附加上server的地址(我是将其在本地运行)。

【Java】Arthas使用的各类方式

  1. 选择对应的进程进行attach,会出现对应的agent-id,再将其填写到对应的serverhttp页面中。

【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式

  1. 最后我们就可以再server端进行操作,即Web Console实现完成。

【Java】Arthas使用的各类方式

方案三    项目依赖

  1. SpringBoot项目依赖:

      <dependency>

<groupId>com.taobao.arthas</groupId>

<artifactId>arthas-spring-boot-starter</artifactId>

<version>${arthas.version}</version>

</dependency>

  1. 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>

  1. 本地项目启动之后可以直接访问:

http://127.0.0.1:3658/

  1. 当然还可以结合上面介绍的Web Console。例如配置文件中增加对应的配置信息:

arthas.agent-id=qwejqjnnnunnq

arthas.tunnel-server=ws://server地址:7777/ws

  1. 演示如下:

【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式

以上步骤就是先把tunnel-server启动,然后本地配置连接tunnel-server。然后输入配置的Id,即可完成对应的调试。

方案四    容器配置

这里介绍下通过Dockerfile进行构建:

FROM openjdk:8-jdk-alpine

ADD 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

阅读 55发布于 1 月 27 日

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


Montos小记

_| |__ __ _| '_ | | | |/ _` || |_) | |_| | (_| ||_.__/ __,_|__, | {代码...}

avatar

Montos

_

1 声望

0 粉丝

0 条评论

得票时间

avatar

Montos

_

1 声望

0 粉丝

宣传栏

【Java】Arthas使用的各类方式

前言

方案介绍

方案一    本地直接运行

  1. 我们可以直接通过官网下载对应的jar,然后运行再进行jar再执行对应的命令。
  2. 命令如下:

java -jar arthas-boot.jar [option]

  1. 演示如下:

【Java】Arthas使用的各类方式

方案二    Web Console实现

  1. 通过下载arthas-tunnel-server。我们可以拿到对应的arthasserver端。下载完毕之后直接运行即可(我是将其在ECS上直接运行)。

【Java】Arthas使用的各类方式

  1. 在客户端对应的启动arthas-boot。并且通过启动参数附加上server的地址(我是将其在本地运行)。

【Java】Arthas使用的各类方式

  1. 选择对应的进程进行attach,会出现对应的agent-id,再将其填写到对应的serverhttp页面中。

【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式

  1. 最后我们就可以再server端进行操作,即Web Console实现完成。

【Java】Arthas使用的各类方式

方案三    项目依赖

  1. SpringBoot项目依赖:

      <dependency>

<groupId>com.taobao.arthas</groupId>

<artifactId>arthas-spring-boot-starter</artifactId>

<version>${arthas.version}</version>

</dependency>

  1. 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>

  1. 本地项目启动之后可以直接访问:

http://127.0.0.1:3658/

  1. 当然还可以结合上面介绍的Web Console。例如配置文件中增加对应的配置信息:

arthas.agent-id=qwejqjnnnunnq

arthas.tunnel-server=ws://server地址:7777/ws

  1. 演示如下:

【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式
【Java】Arthas使用的各类方式

以上步骤就是先把tunnel-server启动,然后本地配置连接tunnel-server。然后输入配置的Id,即可完成对应的调试。

方案四    容器配置

这里介绍下通过Dockerfile进行构建:

FROM openjdk:8-jdk-alpine

ADD 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

回到顶部