SkyWalking的远程调试

远程调试的目的是为了解决代码或者说程序包部署在服务器上运行,只能通过log来查看问题,以及不能跟在本地IDE运行debug那样查找问题,观看程序运行流程…

ps:本文仅写给菜鸟,以及不知道如何远程调试的程序员,并且仅仅适用skywalking的远程调试

概述

远程调试的目的是为了解决代码或者说程序包部署在服务器上运行,只能通过log来查看问题,以及不能跟在本地IDE运行debug那样查找问题,观看程序运行流程… 想想当你的程序运行在服务器上,你在本地的IDE随时debug,是不是很爽的感觉。

好了不废话,切入正题。

环境篇

IDE:推荐 IntelliJ IDEA

开发语言: 本文仅限于java,其他语言请自行询问google爸爸或者baidu娘娘

源代码:自行从github下载,并且确保你运行的skywalking包也源代码的一致,(也就是说你自己从源代码编译打包运行,虽然不一样也可以调试,但是你想想你在本地开发,更改完代码,没有重新运行,debug出现的诡异情况)

场景篇

假定有如下三台机器

IP 用途 备注
10.193.78.1 oap-server skywalking 的oap服务(或者说collector所在的服务器)
10.193.78.2 agent skywalking agent运行所在的服务器
10.193.78.0 IDE 你自己装IDE也就是IntelliJ IDEA的机器

以上环境,场景请自行安装好,并确认正常运行。本文不在赘述

废话终于说完了

操作篇

首要条件,下载源码后,先用maven 打包编译。然后使用Idea打开源码的父目录,整体结构大致如下图 IMAGE

1 :agent调试

1)Idea 配置部分

IMAGE 点击Edit Configurations 在弹出窗口中依次找到(红色线框的部分)并点击 IMAGE IMAGE 打开的界面如下 IMAGE

修改Name值,自己随意,好记即可 然后Host输入10.193.78.2 Port默认或者其他的,重要的是这个端口在10.193.78.2上没有被占用

然后找到Use module classpath 选择 apm-agent 最终的结果如下: IMAGE

注意选择目标agent运行的jdk版本,很重要

然后点击Apply,并找到如下内容,并且复制待用 IMAGE

2)agent配置部分

找到agent配置的脚本,并打开,找到配置agent的地方, IMAGE 就这个地方,在这个后边加上刚才复制的内容 最终的结果如下 IMAGE 提供一个我配置的weblogic的配置(仅供参考) IMAGE 然后重启应用(agent)

3)调试

回到Idea中找到这个地方,并点击debug按钮,你没看错,就是红色圈住的地方 IMAGE 然后控制台如果出现以下字样: IMAGE 那么恭喜你,可以愉快的加断点调试了。 ps:需要注意的是agent的、 service instance的注册可能不能那么愉快的调试。因为这个注册比较快,而且是在agent启动的时候就发生的, 而远程调试也需要agent打开后才可以调试,所以,如果你手快当我没说这句话。

2 :oap-server的调试(也就是collector的调试)

具体过程不在赘述,和上一步的agent调试大同小异,不同的是 Use module classpath需要选择oap-server

IMAGE