开发环境搭建Arthas

1 问题背景

前面阿里开源的Java诊断工具——Arthas对Arthas做了简要的概述,以及阐述了SpringBoot应用、Arthas、Arthas Tunnel Server三者之间的关系。现在用本地电脑做一个Arthas小实践——Arthas整合SpringBoot。

2 前言

本博文将在本地电脑搭一个简单的SpringBoot应用并整合arthas-spring-boot-starter,以jar包方式启动一个Arthas Tunnel Server,监控一个方法的返回结果。

3 SpringBoot应用整合Arthas

引入依赖(2021-10-13,目前最新版本号为3.5.4):

<dependency>
   <groupId>com.taobao.arthas</groupId>
    <artifactId>arthas-spring-boot-starter</artifactId>
    <version>${arthas.version}</version>
</dependency>

配置arthas必要的信息:

arthas.agent-id=hsehdfsfghhwertyfad
arthas.tunnel-server=ws://localhost:7777/ws

解释上面配置:

  • arthas.agent-id可以任意填写,Arthas Tunnel Server端是根据arthas.agent-id以及arthas.tunnel-server来识别Clinet端的。
  • 默认情况下,arthas tunnel server的web端口是8080arthas agent连接的端口是7777
  • localhost是arthas启动所在的机子的IP地址。

启动SpringBoot应用

4 启动Arthas Tunnel Server

前往github下载arthas tunnel server的jar包,使用如下命令启动:

java -jar arthas-tunnel-server-3.5.4-fatjar.jar

浏览器输入localhost:8080访问arthas tunnel server,输入springboot应用配置的arthas.agent-id以及arthas.tunnel-server,输入完点击connect即可。如下所示:

在这里插入图片描述

效果如下图所示:

在这里插入图片描述

5 使用watch命令监控方法的返回值

待监控的方法如下,该方法只是简单加法将两个数相加:

@RestController
@Slf4j
@RequestMapping("/discount")
public class CalculateController {

    @Autowired
    private CalculateService calculateService;

    @GetMapping("/calculate")
    public BigDecimal calculateDiscountAmount(BigDecimal amount1, BigDecimal amount2) {
        BigDecimal discountAmount = calculateService.calculate(amount1, amount2);
        return discountAmount;
    }
}

arthas tunnel server控制台输入如下命令进行监控方法的返回值:

# 搜索CalculateController类的全类名
sc *CalculateController
# 监控CalculateController类中的calculateDiscountAmount方法
watch com.ganzalang.gmall.arthasdemo.controller.CalculateController calculateDiscountAmount

注:如果一个类中存在相同的方法名,入参却不同,则参考watch/monitor/trace 等判断重载函数/同名函数 #434

进入监控状态,效果如下:

在这里插入图片描述

根据CalculateControllercalculateDiscountAmount()的请求参数以及请求方式,在浏览器发送一个请求,笔者发送如下:

http://localhost:8100/discount/calculate?amount1=4&amount2=6

结果如下:

在这里插入图片描述

在生产环境中使用Arthas时,需要注意一些安全性和稳定性的考虑。下面是一些建议: 1. 预先规划:在使用Arthas之前,应该提前规划好其使用场景和目标,并确保只有授权的人员能够访问和使用Arthas。 2. 安全配置:为了保护Arthas的安全性,可以采取以下措施: - 限制Arthas的远程访问,只允许特定IP或特定用户进行远程连接。 - 设置Arthas的访问密码,以防止未授权的人员使用。 - 定期更新Arthas版本,以获取最新的安全修复和功能改进。 3. 功能限制:在生产环境中,建议限制Arthas的使用功能,只开放必要的功能给运维人员使用。避免过多地修改和调试生产系统。 4. 调试风险:在生产环境中进行调试操作可能会带来一定的风险。因此,需要谨慎使用Arthas的调试功能,并确保在调试过程中不会对生产系统造成影响。 5. 日志记录:在使用Arthas时,建议记录相关操作和输出结果,以便后续审计和故障排查。 6. 定期审查:定期审查Arthas的使用情况,包括访问日志、操作记录等,以确保其正常和安全使用。 此外,为了确保生产环境的稳定性和安全性,请在生产环境中使用Arthas之前先在非生产环境进行充分的测试和评估。并建议事先备份重要的数据和代码,以防止意外的问题发生。 总之,使用Arthas需要谨慎并遵循最佳实践,确保其在生产环境中的合理和安全的使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值