下载 arthas-boot.jar,然后用 java -jar 的方式启动
安装命令:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
如果下载速度比较慢,可以使用国内镜像
aliyun镜像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
注:运行第二条命令之前,要运行一个java进程在内存中,不然会出现找不到java进程的错误。
打印帮助信息
jav -jar arthas-boot.jar -h
提示:以下是本篇文章正文内容,下面案例可供参考
1.在Windows中文件系统中建一个arthas的目录,我这里是建在D盘下
-- 1.进入D盘
D:
-- 2.建立arthas目录
md arthas
-- 3.安装arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
我们可以不通过每次进入 ssh 中进行执行程序,我们也可通过 web 方式进行访问操作.通过官网上面的介绍 arthas 的 Web Console,能了解到大致的搭建思路。
基于 Spring 相关搭建的项目直接加入依赖(需要对应的环境支持,例如不能缺少 tools.jar)
<dependency>
<groupId>com.taobao.arthasgroupId>
<artifactId>arthas-spring-boot-starterartifactId>
<version>${arthas.version}version>
dependency>
<dependency>
<groupId>com.taobao.arthasgroupId>
<artifactId>arthas-agent-attachartifactId>
<version>${arthas.version}version>
dependency>
<dependency>
<groupId>com.taobao.arthasgroupId>
<artifactId>arthas-packagingartifactId>
<version>${arthas.version}version>
dependency>
arthas.agent-id=qwejqjnnnunnq
arthas.tunnel-server=ws://server地址:7777/ws
示例如下:
以上步骤就是先把 tunnel-server 启动,然后本地配置连接 tunnel-server。然后输入配置的 Id,即可完成对应的调试。
基于 docker 配置,目前上容器服务的企业不在少数。对于容器服务,也是可以适用的。将 jar 下载下来之后进行 ADD 操作,或者每次通过构建 Dockerfile 则会产生对应含有 arthas 的镜像文件。
这里通过 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 进入执行,步骤和方法一类似。
通过上面的介绍,其实我更推荐使用 Web 接入的方式更好,原因如下:
在服务直接部署在服务器上或者 ECS 云服务器情况下。我们可以直接运行在对应的 client 端,但是我们如何上到各个服务所在的服务器上?通过跳板机?那么我们是不是操作的时候会有可能对应服务器造成影响,直接连接服务器上是肯定不行的。
服务在所运行的 pod 情况下。此时让你连接服务是影响是比上面的情况会小很多,如果发生影响也只是影响到当前运行的 pod。但是如果你想直接连接 pod,那么需要的将对应的 pod 端口需要映射到对应的宿主机上,然后再提供外部访问 ecs 的链接。这样会使得每次 pod 需要映射出去的端口需要一定的规则,无疑是加大了运维等工作,运行则也消耗了当前的资源(访问页面等等则走 http 接口请求,如果通过 ws 连接,减少 7 层方面消耗)。
如果通过上述方法,那么我们可以再一台机器上运行 server 即可,我们每次访问都通过访问 server 去连接到到对应的 client 端,同时对应的 agent-id 可以指定,我们可以每次 pod 进行 client 运行的时候指定当前的 agent-id,让其与当前的 pod 进行一个绑定,便于我们通过 server 进行连接。
当然上述观点仁者见仁智者见智。以上介绍了几种部署以及运行 arthas 的方法,企业可以根据当前的项目架构选择合适的部署进行解决。为什么需要????就因为能帮助开发解决问题,不需要来回发版!