开发效率提升(arthas)

简介

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

关于arthas的命令使用,在官网上已经有了很详细的介绍了,下面我们重点讲解一下arthas在各种环境下的运行方式。

image-20221016160003186

安装与运行

方案一:宿主机和Docker中手动安装

下载arthas-boot.jar,然后用java -jar的方式启动:

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

启动arthas之后输入需要监控的进程pid即可进入arthas终端。

方案二:Alibaba Cloud Toolkit运行arthas

Cloud Toolkit是一个IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。使用本插件,开发者能够方便地将本地应用一键部署到任意机器,或 ECS、EDAS、Kubernetes;并支持高效执行终端命令和 SQL 等。

setp1:下载插件并重启idea

image-20221016172703687

setp2:配置服务器相关信息

image-20221016172555005

注意:ssh的端口号是22,如果是容器环境需要将宿主机的端口号映射为容器的22端口,连接的时候填宿主机端口

image-20221016172634728

setp3:运行arthas

image-20221016172736077

点击诊断之后会自动运行arthas-boot.jar,如果服务器中没有java进程,则arthas进程会自动退出。

image-20221017105310646

方案三:把arthas安装到基础镜像

在构建容器镜像的时候直接将arthas打包进镜像中,也分为两个方式:在构建镜像的时候下载和从主机中拷贝。在docker中安装arthas的前提是容器中安装的java环境是JDK,如果安装JRE则会缺失很多JAVA的命令工具和类库,Arthas是没法正常工作的。

  • 下载
RUN apt-get update
RUN apt-get install -y curl     #install wget lib
RUN mkdir -p arthas && cd arthas     #create folder and cd to folder
RUN curl -O https://arthas.aliyun.com/arthas-boot.jar
  • 拷贝
FROM adoptopenjdk/openjdk8:alpine-slim
# copy arthas
COPY arthas/arthas-boot.jar /opt/arthas

拷贝的时候要注意一下文件的路径

image-20221017112502917

方案四:使用arthas-spring-boot-starter
1、在项目的pom.xml引入
        <dependency>
            <groupId>com.taobao.arthas</groupId>
            <artifactId>arthas-spring-boot-starter</artifactId>
            <version>${arthas.version}</version>
        </dependency>
2、修改yml文件

yml有两种配置方式

2.1、Arthas Tunnel实现远程管理
  • a、下载并部署arthas tunnel server

https://github.com/alibaba/arthas/releases

  • b、启动arthas tunnel server
java -jar  arthas-tunnel-server-3.5.0-fatjar.jar

注: 默认情况下,arthas tunnel server的web端口是8080,arthas agent连接的端口是7777

  • c、在项目的yml配置如下内容
arthas:
  agent-id: ${ARTHAS_AGENT_ID:hsehdfsfghhwertyfad}
  app-name: ${spring.application.name}
  tunnel-server: ${ARTHAS_TUNNEL_SERVER:ws://localhost:7777/ws}

注: agentId要保持唯一,否则会在tunnel server上冲突,不能正常工作

  • d、访问tunnel server

image-20221016164315513

2.2、直接在项目的yml配置
arthas:
 # 通过http访问的端口
  http-port: 8563
  # 通过telnet访问的端口
  telnet-port: 3658
  session-timeout: 1800
  # 绑定的ip
  ip: 0.0.0.0

注: 如果配置 arthas.telnetPort为 -1 ,则不监听 telnet端口。如果配置 arthas.telnetPort为 0 ,则随机telnet端口。arthas.httpPort类似。

绑定的ip

ip: 0.0.0.0


**注:** 如果配置 arthas.telnetPort为 -1 ,则不监听 telnet端口。如果配置 arthas.telnetPort为 0 ,则随机telnet端口。arthas.httpPort类似。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值