最近排查一个线上问题,有个第三方公司服务启动后,访问的时候总是报数据库连接失败。由于是第三方服务,没法增加一些日志进行观察,所以使用阿里的arthas在线诊断工具进行排查。服务部署在客户的机房中,不允许连接外部网络,所以手动下载arthas-boot.jar
并通过scp
方式上传到目标机器的方式去运行。
根据arthas官网安装教程,下载arthas-boot.jar
,然后scp
上传到目标主机(客户的机器):
$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar
$ scp -rp arthas-boot.jar appweb@192.168.100.4:/appweb/
执行java -jar arthas-boot.jar
,运行结果如下图所示:
原来arthas-boot.jar
并不是全量包,它会在启动的时候先去阿里Maven仓库下载一些jar包依赖;如果Maven下载失败,那么它会检查本地是否有jar包依赖文件,例如图中的日志:
[ERROR] Can not find Arthas under local: /root/.arthas/lib
所以解决方案可以这样:在我的机器上(可联外网),先运行java -jar arthas-boot.jar
下载得到一个.arthars
文件夹,里面存放的就是arthas-boot.jar所需的一些jar包依赖。.arthars
文件夹会默认在用户主目录下生成。
最后将.arthas
文件夹也scp
传送到客户的目标机器,即可完成。