2026/2/21 20:49:28
网站建设
项目流程
网站建设杭州最便宜,什么网站可以做miR的差异表达图,中国经济排名世界第几,前端一般模仿什么网站Arthas 是一款线上监控诊断产品#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息#xff0c;并能在不修改应用代码的情况下#xff0c;对业务问题进行诊断#xff0c;包括查看方法调用的出入参、异常#xff0c;监测方法执行耗时#xff0c;类加载信…Arthas 是一款线上监控诊断产品通过全局视角实时查看应用 load、内存、gc、线程的状态信息并能在不修改应用代码的情况下对业务问题进行诊断包括查看方法调用的出入参、异常监测方法执行耗时类加载信息等大大提升线上问题排查效率。一、Spring Boot 集成 Arthas通过官方的工具Arthas Spring Boot Starter集成到 Spring Boot 项目中可以非常方便的使用 Arthas。在我们自己的项目中引入 Arthas 的 starter在启动 Spring Boot 自身应用的同时Spring 会启动 Arthas并且 attach 自身进程。最后通过暴露 Arhtas 终端的端口的方式方便用户进入到 Arthas 的终端进行调试。 集成后用户不再需要去 Arthas 的官网下载 Arthas 的安装包也不需将 Arthas 的安装包拷贝到应用容器中。1、项目集成1、配置 maven 依赖!-- Arthas Spring Boot Starter --dependencygroupIdcom.taobao.arthas/groupIdartifactIdarthas-spring-boot-starter/artifactIdversion4.1.3/version/dependency2、配置属性arthas:# Telnet 连接端口用于通过 Telnet 客户端连接 Arthastelnet-port:3658# HTTP 服务端口用于通过浏览器访问 Arthas Web Consolehttp-port:8563telnet-port:暴露这个端口是为了支持用户通过 telnet 的方式进入 arhtas 的终端进行远程调试。http-port暴露这个端口是为了支持用户通过浏览器的方式进入 arhtas 的终端进行远程调试。2、使用 Arhtas经过上述的配置Spring Boot 项目启动时会自动启动 Arthas并 attach 自身进程。启动项目控制台日志如下c.a.arthas.spring.ArthasConfiguration:Arthas agent start success.1、通过 telnet 进入 arhtas 终端接下来通过 telnet 命令可以进入 Arthas 的终端进行远程调试。使用配置文件配置的telnet-port: 3658端口。如下所示telnet localhost3658接下来就可以在 arthas 终端执行各种 arthas 指令调试代码详细使用方法可以参考 Arthas 文档。如 dashboard 整个过程操作下来不需要像原始的从官网下载 arhtas 安装包然后执行java -java arthas-boot.jar的指令进入到 arhtas 终端。通过集成到自有项目中直接一个 telnet 指令就可以直接进入到终端比之前的方式简单多了。2、通过浏览器进入 arhtas 终端接下来通过浏览器可以进入 Arthas 的 Web Console。使用配置文件配置的http-port: 8563端口。如下所示3、远程使用 Arthas在生产环境中自有 Spring Boot 项目部署在服务器上然后再使用 arthas 进行远程调试要额外开启访问配置注意会有安全风险。arthas:# Telnet 连接端口用于通过 Telnet 客户端连接 Arthastelnet-port:3658# HTTP 服务端口用于通过浏览器访问 Arthas Web Consolehttp-port:8563# 127.0.0.1 只能本地访问0.0.0.0 则可网络访问但是存在安全问题需谨慎使用。ip:0.0.0.0二、Arthas Tunnel 增强现如今项目在采用微服务架构时会有无数个 Spring Boot 应用每个应用都有一个 Arthas 客户端这样会使得 Arthas 操作变得些许麻烦。我们需要实时维护所有服务节点的地址当需要远程调试某个节点时首先需要找到对应节点的 ip 地址再通过浏览器去访问该节点的调试页面进行调试。当服务节点数量变多时这个过程会非常麻烦因此Arthas 引入了Arthas TunnelArthas Tunnel是一个服务端。Arthas Tunnel有点类似于“注册中心”管理所有的 Arthas 客户端。如在流式计算里Java 进程可以是在不同的机器启动的想要使用 Arthas 去诊断会比较麻烦因为用户通常没有机器的权限即使登录机器也分不清是哪个Java 进程。在这种情况下可以使用Arthas Tunnel Server/Client。通过Arthas Tunnel Server/Client来远程管理/连接多个 Agent。1、Arthas Tunnel Server首先需要到 GitHub 下载Arthas Tunnel Server并启动。https://github.com/alibaba/arthas/releases注意点是下载的版本最好和arthas-spring-boot-starter这两个版本最好保持一致减少不必要的兼容问题。执行java -jar -Darthas.enable-detail-pagestrue arthas-tunnel-server-4.1.3-fatjar.jar即可启动arthas-tunnel-server。参数Darthas.enable-detail-pagestrue是开启Tunnel Server的管理页面。如果不配置是无法通过页面看到所有的 arthas 客户端的。注意开放管理页面有风险管理页面没有安全拦截功能务必自行增加安全措施不要开放到公网。可以通过http://127.0.0.1:8080/actuator/arthas查看到具体的连接信息登录用户名是 arthas密码在Tunnel Server的日志里可以找到比如2025-12-2611:34:40.524 WARN3740---[main].s.s.UserDetailsServiceAutoConfiguration:Using generated security password: a0ab4417-6c43-4c21-a19a-9888c2d123e4 This generated password isfordevelopment use only. Your security configuration must be updated before running your applicationinproduction.可以通过启动命令修改配置文件-Dserver.port修改指定 web 端口-Darthas.server.port指定注册端口下面的命令就是将 web 端口设置为 8081注册端口设置为 8888java -jar -Dserver.port8081-Darthas.server.port8888-Darthas.enable-detail-pagestrue arthas-tunnel-server-4.1.3-fatjar.jar2、Arthas Tunnel Client现在需要在自有的 Spring Boot 项目中配置 arthas 参数告诉 arthas 客户端需要将自己的地址注册到Tunnel Server。spring:application:name:springboot-11-arthasarthas:# Telnet 连接端口用于通过 Telnet 客户端连接 Arthastelnet-port:-1# HTTP 服务端口用于通过浏览器访问 Arthas Web Consolehttp-port:-1# 127.0.0.1 只能本地访问0.0.0.0 则可网络访问但是存在安全问题需谨慎使用。#ip: 0.0.0.0# 应用名称用于标识应用app-name:${spring.application.name}# 默认情况下会生成随机ID如果 arthas agent 配置了 appName则生成的 agentId 会带上 appName 的前缀。# 注意agentId 要保持唯一否则会在 tunnel server 上冲突不能正常工作agent-id:${spring.application.name}_Don001# tunnel-server 地址Arthas 隧道服务器地址用于连接 Arthas 隧道服务器tunnel-server:ws://127.0.0.1:7777/ws因为不需要像上述那样通过 arthas 客户端的 http 端口或 telnet 端口访问 arhtas 终端所以将telnet-port和http-port都设置为-1表示禁用 http 和 telnet 单独连接 arthas 客户端后续统一使用Arthas Tunnel Server进行连接并操作。启动两个应用可以看到Tunnel Server中有新的连接2025-12-2611:51:23.006 INFO3740---[Server-boss-1-1]io.netty.handler.logging.LoggingHandler:[id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777]READ:[id: 0xee929d2a, L:/127.0.0.1:7777 - R:/127.0.0.1:51404]2025-12-2611:51:23.007 INFO3740---[Server-boss-1-1]io.netty.handler.logging.LoggingHandler:[id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777]READ COMPLETE2025-12-2611:51:23.098 INFO3740---[rver-worker-3-2]c.a.a.t.server.TunnelSocketFrameHandler:websocket handshake complete, uri: /ws?methodagentRegisterarthasVersion4.1.3appNamespringboot-11-arthasidDon2025-12-2611:53:09.824 INFO3740---[Server-boss-1-1]io.netty.handler.logging.LoggingHandler:[id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777]READ:[id: 0xcc24edb0, L:/127.0.0.1:7777 - R:/127.0.0.1:51506]2025-12-2611:53:09.824 INFO3740---[Server-boss-1-1]io.netty.handler.logging.LoggingHandler:[id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777]READ COMPLETE2025-12-2611:53:09.839 INFO3740---[rver-worker-3-3]c.a.a.t.server.TunnelSocketFrameHandler:websocket handshake complete, uri: /ws?methodagentRegisterarthasVersion4.1.3appNamespringboot-11-arthasidDon2然后访问管理页面查看所有已连接的 arthas 客户端管理页面地址是服务器ip:端口号/apps.html。显示如下图所示注如果要自定义配置agent-id参数则必须包含 _ 符号且同服务实例需要相同的前缀类似自动生成的规则。具体见源码com.alibaba.arthas.tunnel.server.app.web#tunnelApps点击服务springboot-11-arthas进入服务的实例页面显示如下图所示点击某一实例进入实例页面显示如下图所示3、认证可以在配置文件里添加arthas.username和arthas.password来设置用户名和密码然后访问管理页面时需要输入用户名和密码。arthas:# Telnet 连接端口用于通过 Telnet 客户端连接 Arthastelnet-port:-1# HTTP 服务端口用于通过浏览器访问 Arthas Web Consolehttp-port:-1# 127.0.0.1 只能本地访问0.0.0.0 则可网络访问但是存在安全问题需谨慎使用。#ip: 0.0.0.0# 应用名称用于标识应用app-name:${spring.application.name}# 默认情况下会生成随机ID如果 arthas agent 配置了 appName则生成的 agentId 会带上 appName 的前缀。# 注意agentId 要保持唯一否则会在 tunnel server 上冲突不能正常工作#agent-id: Don# tunnel-server 地址Arthas 隧道服务器地址用于连接 Arthas 隧道服务器tunnel-server:ws://127.0.0.1:7777/ws username:admin password:admin首先需要在终端使用 auth 指令进行认证认证通过后才能执行其他 arthas 指令 执行auth -username admin admin通过 arhtas 的认证然后执行 session 指令查看当前 session 的信息[arthas15432]$ session Error!commandnot permitted, try to useauthcommandto authenticates.[arthas15432]$ auth Authentication result: false, Need authentication:true[arthas15432]$ auth -username admin admin Authentication result: true, username: admin[arthas15432]$ auth Authentication result: true, Need authentication:true[arthas15432]$ session Name Value ------------------------------------------------------------- JAVA_PID15432SESSION_ID c7929c0c-0d30-4563-827b-1babeff98f7c AGENT_ID springboot-11-arthas_SX0SZK8T5ZJWUYPJOMOJ TUNNEL_SERVER ws://127.0.0.1:7777/ws TUNNEL_CONNECTEDtrue[arthas15432]$三、总结1、首先讲述了自有的 Spring Boot 应用集成Arthas Spring Boot Starter的方式便于快速使用 Arthas 进行调试。2、然后借助Arthas Tunnel Server/Client来远程管理/连接多个服务器下的 Java 服务轻松实现多个服务器下的 Java 服务的远程调试。注Tunnel Server开放管理页面有风险管理页面没有安全拦截功能务必自行增加安全措施不要开放到公网。