首页 > 其他分享 >聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用

聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用

时间:2024-04-23 09:25:28浏览次数:15  
标签:springboot tunnel server 远程管理 arthas com 应用

前言

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目录,然后点击脚本运行即可

标签:springboot,tunnel,server,远程管理,arthas,com,应用
From: https://www.cnblogs.com/linyb-geek/p/17976684

相关文章

  • linux8-ssh远程管理
    1.网络配置使用nmtui命令或进入配置文件修改配置为静态1vim/etc/sysconfig/network-scripts/ifcfg-ens1602TYPE=Ethernet3PROXY_METHOD=none4BROWSER_ONLY=no5BOOTPROTO=none6DEFROUTE=yes7IPV4_FAILURE_FATAL=no8IPV6INIT=yes9IPV6_AUTOCONF=yes1......
  • SeaTunnel JDBC DB2 Sink Connector支持的工作原理,快来学习吧!
    DB2是IBM的一款关系型数据库管理系统,JDBCDB2SourceConnector是一个用于通过JDBC读取外部数据源数据的连接器。ApacheSeaTunnel如何支持JDBCDB2SinkConnector?请参考本文档。支持引擎SparkFlinkSeaTunnelZeta主要功能精确一次性CDC(变更数据捕获)使用Xa事务......
  • 【安装部署】Apache SeaTunnel 和 Web快速安装详解
    版本说明由于作者目前接触当前最新版本为2.3.4但是官方提供的web版本未1.0.0,不兼容2.3.4,因此这里仍然使用2.3.3版本。可以自定义兼容处理,官方提供了文档:https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ因为大部分用户使用SeaTunnelWeb都是基于SeaTunnel-2.3.3版本做的适......
  • 【报错】Error: https://registry.npmmirror.com.tgz: tunneling socket could not be
    报错信息:Error:https://registry.npmmirror.com/bytes/download/bytes-3.0.0.tgz:tunnelingsocketcouldnotbeestablished,cause=connectECONNREFUSED127.0.0.1:31181详细报错:Error:https://registry.npmmirror.com/bytes/download/bytes-3.0.0.tgz:tunnelingsoc......
  • 远程管理
    1、打开远程控制软件teamviewer手机版,选择右上角“齿轮”图标,2、进入到设置界面,选择“登录或注册”选项,3、往下滑动,选择下方“注册”选项,4、填写“电子邮箱”、“姓名”、“密码”和“确认密码”后,选择下方“注册”即可。teamviewer手机版如何控制电脑?1、打开电脑端Team......
  • SeaTunnel Web 在 Debian 环境的安装
    SeaTunnelWeb在Debian环境的安装目录SeaTunnelWeb在Debian环境的安装下载软件安装目录下载连接器测试SeaTunnel任务下载数据库驱动启动客户端模式配置web元数据库配置Web应用添加MySQL驱动配置JAVA_HOME配置SEATUNNEL_HOME下载连接器到Web复制连接器映射配置文件启动服......
  • 海豚调度任务类型Apache SeaTunnel部署指南
    ApacheDolphinScheduler已支持ApacheSeaTunnel任务类型,本文介绍了SeaTunnel任务类型如何创建,任务参数,以及任务样例。一、ApacheSeaTunnelSeaTunnel任务类型,用于创建并执行SeaTunnel类型任务。worker执行该任务的时候,会通过start-seatunnel-spark.sh、start-seatunnel......
  • SeaTunnel DB2 Source Connector 使用文档(含详细操作步骤)
    DB2是IBM的一款关系型数据库管理系统,JDBCDB2SourceConnector是一个用于通过JDBC读取外部数据源数据的连接器。ApacheSeaTunnel如何支持JDBCDB2SourceConnector?请参考本文档。支持引擎SparkFlinkSeaTunnelZeta引擎主要特性批处理(batch)精确一次(exactly-once)列投......
  • Arthas - Can not read arthas version from: https://arthas.aliyun.com/api/latest_
    问题描述[ERROR]Cannotreadarthasversionfrom: https://arthas.aliyun.com/api/latest_version[ERROR]CannotfindArthasunderlocal:/root/.arthas/libandremoterepomirror:aliyun[ERROR]Unabletodownloadarthasfromremoteserver,pleasedownload......
  • Python下Django通过SSHTunnel连接ECS上未开通外网地址RDS的解决方案
    在开发过程中,碰到需要在PythonDjango项目中连接到位于ECS上但未开通外网地址的RDS数据库。这种情况下,通过建立SSH隧道来实现连接,确保数据传输的安全性和可靠性。 1、安装sshtunnel包pip3installsshtunnel2、导入SSHTunnelFowarder模块fromsshtunnelimp......