live-demo和skywalking源码联调构建项目找到一个目录,执行如下命令gitclonehttps://github.com/apache/skywalking.git#cloneskywalking项目cdskywalking#进入skywalking目录gitcheckoutv8.4.0#切换到v8.4.0版本gitcheckout-bnew_v8.4.0#创建一个新的分支gitsubmoduleinit#初始化子模块gitsubmoduleupdate#更新子模块,注意:可能会因为以下原因而失败网络问题,如果失败多试几次即可。/mvnwcleanpackage-DskipTests#执行maven命令构建skywalking项目,时间较长,耐心等待...cd..#进入上层目录gitclonehttps://github.com/SkyAPMTest/skywalking-live-demo#clonelive-demoskywalkingcaseprojectcdskywalking-live-demo#进入skywalking-live-demo目录mvncleanpackage#buildthedemoprojectcd..#构建成功后进入上级目录会在下面两个目录下生成安装包├──skywalking│└──dist││├──apache-skywalking-apm-bin-es7.tar.gz#es7安装包││└──apache-skywalking-apm-bin.tar.gz└──skywalking-live-demo└──live-demo-as??sembly.tar.gz#demo项目skywalking部分模块构建#打包agent模块,会有一个skywalking-agent目录./mvnwpackage-Pagent-DskipTests#packageagentmodule,然后打包到dist目录下。/mvnwpackage-Pagent,dist-DskipTests#打包backend模块,然后打包到dist目录下。/mvnwpackage-Pbackend,dist-DskipTests#打包UI模块,然后打包到dist目录下。amoduleintotheskywalking-live-demoproject在IDEA中打开skywalking-live-demo项目,使用ModulefromExistingSources的方式在打开的skywalking-live-demo项目中导入Skywalking导入成功后,将以下两个模块PS出现:导入skywalking项目时可能会出现skywalking如果子模块被忽略,可以使用下面的方法取消忽略,启动OAP服务。执行org.apache.skywalking.oap.server.starter.OAPServerStartUp#main方法启动OAP服务生成skywalking-agentcdskywalking#进入skywalking目录./mvnwpackage-Pagent-DskipTests#打包agent模块,将出现skywalking-agent目录。生成的skywalking-agent目录结构如下:skywalking└──skywalking-agent├──activations├──bootstrap-plugins├──config├──logs├──optional-plugins├──optional-reporter-plugins├──plugins└──skywalking-agent.jar配置项目JVM启动参数ProjectA,ProjectB,ProjectC,ProjectD项目都需要配置,这里使用ProjectA作为Example-javaagent:{需要替换成项目目录}/skywalking/skywalking-agent/skywalking-agent.jar-Dskywalking.collector.grpc_channel_check_interval=2-Dskywalking.collector.app_and_service_register_check_interval=2-Dcollector.discovery_check_interval=2-Dskywalking.collector.backend_service=localhost:11800-Dskywalking.agent.service_name=business-zone::projectA-floging.walking=-Dskywalking。plugin.toolkit.log.grpc.reporter.server_host=localhost-Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800-Dskywalking.plugin.toolkit.log.grpc.reporter.max_message_size=10485760-Dskywalking.plugin.toolkit.log.grpc.reporter.upstream_timeout=30验证agent断点是否生效在org.apache.skywalking.apm.agent.SkyWalkingAgent#premain方法中任意一条语句下断点,启动ProjectA,在UI上验证是否trace生成启动Kafka,Eureka,ProjectB,ProjectC,ProjectD,ProjectA在命令上执行curl"http://localhost:8764/projectA/test"$curl"http://localhost:8764/projectA/test"{"linetraceId":"20b7bb868a384b7bac5130efb5f76f17.82.16244120942450001"}%使用上一步得到的traceId在UI中查询,可以得到如下结果PS:注意ProjectA、ProjectB、ProjectC、ProjectD和Eureka都可以从IDEA源码启动,但是Kafka需要通过命令启动。可以参考live-demo/bin/startup.sh脚本总结一下是研究源码执行过程还是自己写一些插件扩展一些功能。调试源码最好Skywalking的基本操作有些不同,它的客户端不能直接执行,需要附加到其他应用程序。参考文档skywalking-live-demo分享和记录自己的所学
