news 2026/3/10 6:50:32

SpringBoot + Arthas,线上监控诊断进阶玩法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot + Arthas,线上监控诊断进阶玩法

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 --><dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-spring-boot-starter</artifactId><version>4.1.3</version></dependency>
2、配置属性
arthas:# Telnet 连接端口,用于通过 Telnet 客户端连接 Arthastelnet-port:3658# HTTP 服务端口,用于通过浏览器访问 Arthas Web Consolehttp-port:8563
  • telnet-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-pages=true arthas-tunnel-server-4.1.3-fatjar.jar即可启动arthas-tunnel-server

参数Darthas.enable-detail-pages=true是开启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,注册端口设置为 8888

java -jar -Dserver.port=8081-Darthas.server.port=8888-Darthas.enable-detail-pages=true arthas-tunnel-server-4.1.3-fatjar.jar
2、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-porthttp-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?method=agentRegister&arthasVersion=4.1.3&appName=springboot-11-arthas&id=Don2025-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?method=agentRegister&arthasVersion=4.1.3&appName=springboot-11-arthas&id=Don2

然后访问管理页面查看所有已连接的 arthas 客户端,管理页面地址是:服务器ip:端口号/apps.html。显示如下图所示:

注:如果要自定义配置agent-id参数,则必须包含 _ 符号,且同服务实例需要相同的前缀,类似自动生成的规则。

具体见源码com.alibaba.arthas.tunnel.server.app.web#tunnelApps

点击服务springboot-11-arthas,进入服务的实例页面,显示如下图所示:

点击某一实例,进入实例页面,显示如下图所示:

3、认证

可以在配置文件里添加arthas.usernamearthas.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 的信息:

[arthas@15432]$ session Error!commandnot permitted, try to use'auth'commandto authenticates.[arthas@15432]$ auth Authentication result: false, Need authentication:true[arthas@15432]$ auth -username admin admin Authentication result: true, username: admin[arthas@15432]$ auth Authentication result: true, Need authentication:true[arthas@15432]$ 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[arthas@15432]$

三、总结

1、首先讲述了自有的 Spring Boot 应用集成Arthas Spring Boot Starter的方式,便于快速使用 Arthas 进行调试。

2、然后借助Arthas Tunnel Server/Client来远程管理/连接多个服务器下的 Java 服务,轻松实现多个服务器下的 Java 服务的远程调试。

注:Tunnel Server开放管理页面有风险!!!管理页面没有安全拦截功能,务必自行增加安全措施,不要开放到公网。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/9 16:00:00

蒙特卡洛模拟电动汽车的有序充放电策略及其在优化调度、微电网与综合能源、储能、新能源方向的基础入...

蒙特卡洛模拟电动汽车有序充放电(matlab)&#xff0c;适合优化调度&#xff0c;微电网&#xff0c;综合能源、储能、新能源方向的基础入门学习 最近在折腾电动汽车充放电调度的问题&#xff0c;发现蒙特卡洛模拟真是个神器。今天咱们就用Matlab整点有意思的——模拟100辆电动汽…

作者头像 李华
网站建设 2026/3/4 0:21:31

​三拼域名chaojidao.com深度点评​

三拼域名chaojidao.com深度点评 核心结论&#xff1a;chaojidao.com是一枚含义明确、行业属性强、终端潜力巨大的优质三拼域名&#xff0c;尤其在农业科技与食品领域具备突出价值&#xff0c;同时存在 "小米超级岛" 概念的跨界联想空间&#xff0c;建议长期持有并重…

作者头像 李华
网站建设 2026/3/9 18:57:59

漏洞扫描十大工具

漏洞扫描十大工具 AwVS AwVS是一款知名的Web网络漏洞扫描工具&#xff0c;它通过网络爬虫测试你的网站安全&#xff0c;检测流行安全漏洞。 a)、自动的客户端脚本分析器&#xff0c;允许对Ajax和Web 2.0应用程序进行安全性测试 b)、业内最先进且深入的SQL 注入和跨站脚本测试…

作者头像 李华
网站建设 2026/3/10 11:43:32

Redshift vs Octane 深度对比:哪款渲染器更适合 Cinema 4D 工作流程?

在 Cinema 4D 的世界里&#xff0c;选择合适的 GPU 渲染器能够显著提升你的创作效率和渲染质量。当前主流的两个选择是 Redshift 和 OctaneRender&#xff0c;它们各有特点&#xff0c;适合不同风格的项目需求。本文将从核心性能和工作流程体验角度&#xff0c;为你做一个清晰对…

作者头像 李华
网站建设 2026/3/7 23:00:21

【vtkPolyDataPointSampler 】——多边形数据点采样技术详解

VTK核心类解析:vtkPolyDataPointSampler 多边形数据点采样技术详解 简单说,vtkPolyDataPointSampler 就是 VTK里的 “点生成器”—— 专门给 3D 模型(比如三角形、多边形组成的物体)表面或内部,按需求打一堆采样点,生成的点云能直接用在后续的可视化、建模或计算里。 一…

作者头像 李华
网站建设 2026/3/4 10:49:00

电子签章选型指南:云巨头生态服务与垂直专业厂商的六大维度解析

随着电子签章应用在市场越来越普及和受追捧&#xff0c;超级大厂也相继推出了自己的电子签章产品&#xff0c;如华为的华为云电子签、阿里的阿里云电子签、腾讯的腾讯电子签服务。那这些大厂推出的电子签章产品和服务与传统第三方电子签公司北京安证通有什么相同和区别呢&#…

作者头像 李华