聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
2024/5/9 6:02:46
本文主要是介绍聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。很久之前写过一篇文章java应用线上诊断神器–Arthas里面比较详细的介绍了如何使用arthas,感兴趣的朋友可以看下。
在单机的场景下,我们可能直接在宿主机装个arthas,就可以很便捷的监控我们的应用,但是微服务的架构下,单机那种做法可能就不大合适,因为涉及的服务会比较多,意味着部署的服务器资源也比较多,arthas可能会是散落在各个地方,今天给大家推荐一种方式,通过arthas-tunnel-server来管理远程所有需要arthas监控的应用
如何安装arthas tunnel server
可以通过https://github.com/alibaba/arthas/releases进行下载
因为arthas tunnel server本身就是一个java应用,我们通过
java -jar -Darthas.enable-detail-pages=true arthas-tunnel-server.jar
就可以直接启动。arthas.enable-detail-pages这个属性是用来开启arthas tunnel server管理页面。不过开启这个有风险,官方有做了说明
默认情况下,arthas tunnel server 的 web 端口是8080,arthas agent 连接的端口是7777。
浏览器访问http://127.0.0.1:8080/,进入arthas tunnel server web页面
应用程序如何与arthas tunnel server进行交互
因为在微服务场景下,基本上都是采用springboot,因此我们就以springboot来演示
1、在项目的pom引入arthas-spring-boot-starter gav
<dependency> <groupId>com.taobao.arthas</groupId> <artifactId>arthas-spring-boot-starter</artifactId> <version>${arthas.version}</version> </dependency>
2、springboot的applicaton.yml配置如下内容
arthas: http-port: ${ARTHAS_HTTP_PORT:0} telnet-port: ${ARTHAS_TELNET_PORT:0} session-timeout: ${ARTHAS_SESSION_TIMEOUT:30000} #ip: 0.0.0.0 # agent-id: ${ARTHAS_AGENT_ID:hsehdfsfghhwertyfad} app-name: ${spring.application.name} tunnel-server: ${ARTHAS_TUNNEL_SERVER:ws://localhost:7777/ws}
这几个属性的说明,大家看属性字段应该就知道啥意思了,就不过多论述了,不过这边有几个端口配置成0的意思稍微说明下
- 如果配置 arthas.telnetPort为 -1 ,则不 listen telnet 端口。arthas.httpPort类似。
- 如果配置 arthas.telnetPort为 0 ,则随机 telnet
端口,在~/logs/arthas/arthas.log里可以找到具体端口日志。arthas.httpPort类似。
官方对端口的配置,也给了相应的建议
更多相关的配置信息,可以查看官网
https://arthas.aliyun.com/doc/arthas-properties.html
或者也可以看下属性配置的源码,因为是springboot应用,相对比较容易看懂
https://github.com/alibaba/arthas/blob/master/arthas-spring-boot-starter/src/main/java/com/alibaba/arthas/spring/ArthasProperties.java
3、验证能否和arthas tunnel server进行交互
启动我们的应用程序,然后访问arthas tunnel server,通过浏览器输入
http://localhost:8080/apps.html,查看所有连接的应用列表
点击应用名底下的蓝色按钮,就可以看到连接的所有 agent 列表
点击你要诊断的应用,进入我们已经非常熟悉的arthas页面
接着就可以利用arthas命令,进行我们要诊断的事项了
总结
凡事都有两面性,在带来便捷的情况下,可能会有一定的安全风险,因此官方也提了如下建议
arthas tunnel是个好东西,更多详细的介绍,大家可以查阅官网
https://arthas.aliyun.com/doc/tunnel.html
demo链接
https://github.com/lyb-geek/springboot-learning/tree/master/springboot-arthas-tunnel
注: 本案例demo提供有启动arthas tunnel server的window脚本
因为target的arthas-tunnel-server.jar比较大,我就没上传到github了,需要演示本案例的朋友,可以把下载好的arthas-tunnel-server.jar放到target目录,然后点击脚本运行即可
这篇关于聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?