1. 开发环境搭建
2025/8/4大约 3 分钟
1. 开发环境搭建
Windows 10 环境 IDEA 搭建
skywalking
服务端的源码调试环境。
参考文档:
下载构建
下载
Prepare JDK 17 or 21.
- 注意不可以使用Java8来构建
git clone --recurse-submodules https://github.com/apache/skywalking.git
cd skywalking/
# windows 直接使用本地mvn
mvn clean package -Dmaven.test.skip
构建
- 构建 sw server
mvn clean compile -Dmaven.test.skip=true
说明
下载后,编译之后,根据官方文档描述,需要将部分的proto
文件的生成路径加入到源码
- ref: Setting up your IntelliJ IDEA
NOTE: If you clone the codes from GitHub, please make sure that you have finished steps 1 to 3 in section Build from GitHub. If you download the source codes from the official website of SkyWalking, please make sure that you have followed the steps in section Build from Apache source code release.
- Import the project as a maven project.
- Run
./mvnw compile -Dmaven.test.skip=true
to compile project and generate source codes. The reason is that we use gRPC and protobuf. - Set Generated Source Codes folders.
- 以下路径的文件夹,需要加入IDEA的源码路径,右键
mark as source
即可grpc-java
andjava
folders in apm-protocol/apm-network/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/server-core/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/server-receiver-plugin/receiver-proto/target/generated-sources/fbsgrpc-java
andjava
folders in oap-server/server-receiver-plugin/receiver-proto/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/exporter/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/server-configuration/grpc-configuration-sync/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/server-alarm-plugin/target/generated-sources/protobufgrpc-java
andjava
folders in oap-server/server-fetcher-plugin/fetcher-proto/target/generated-sources/protobufantlr4
folder in oap-server/oal-grammar/target/generated-sources
启动
根据sky walking 提供的启动脚本观察,需要启动两个服务,并且还有启动参数:
共两个类:
org.apache.skywalking.oap.server.webapp.ApplicationStartUp
添加VM启动参数:-Xms256M -Xmx512M -Doap.logDir=D:\code\github\skywalking-server\skywalking\logs\logs
org.apache.skywalking.oap.server.starter.OAPServerStartUp
注意再启动OAPserver 之前先修改配置文件oap-server/server-starter/src/main/resources/application.yml
将里边的storage.selector
改成es, 因为windows 环境无法安装默认的banyanDB, 当然可选的存储还有mysql, pgsql...
Elasticsearch 安装与启动
提示,es 新版本不知道如何启动,我下载的es7.3,ES 7.3 需要通过Java8来启动,而sky walking是 JDK17 或者 jdk 21, 所以,需要修改es的启动脚本。
下载地址:https://www.elastic.co/downloads/past-releases/elasticsearch-7-3-0
- 找到jdk8的路径,比如我这里是:
D:\soft\jdks\jdk1.8.0_422\bin\java.exe
打开elasticsearch.bat
文件,将里边的%JAVA_HOME%
全部替换成D:\soft\jdks\jdk1.8.0_422\bin\java.exe
即可。
这个修改,代表的是不读取系统的Java环境变量,使用的是我们自己定义的Java程序。
- 修改后的部分代码示例:
@echo off
setlocal enabledelayedexpansion
setlocal enableextensions
SET params='%*'
:loop
FOR /F "usebackq tokens=1* delims= " %%A IN (!params!) DO (
SET current=%%A
SET params='%%B'
SET silent=N
IF "!current!" == "-s" (
SET silent=Y
)
IF "!current!" == "--silent" (
SET silent=Y
)
IF "!silent!" == "Y" (
SET nopauseonerror=Y
) ELSE (
IF "x!newparams!" NEQ "x" (
SET newparams=!newparams! !current!
) ELSE (
SET newparams=!current!
)
)
IF "x!params!" NEQ "x" (
GOTO loop
)
)
CALL "%~dp0elasticsearch-env.bat" || exit /b 1
IF ERRORLEVEL 1 (
IF NOT DEFINED nopauseonerror (
PAUSE
)
EXIT /B %ERRORLEVEL%
)
if not defined ES_TMPDIR (
for /f "tokens=* usebackq" %%a in (`CALL D:\soft\jdks\jdk1.8.0_422\bin\java.exe -cp "!ES_CLASSPATH!" "org.elasticsearch.tools.launchers.TempDirectory"`) do set ES_TMPDIR=%%a
)
set ES_JVM_OPTIONS=%ES_PATH_CONF%\jvm.options
@setlocal
for /F "usebackq delims=" %%a in (`CALL D:\soft\jdks\jdk1.8.0_422\bin\java.exe -cp "!ES_CLASSPATH!" "org.elasticsearch.tools.launchers.JvmOptionsParser" "!ES_JVM_OPTIONS!" ^|^| echo jvm_options_parser_failed`) do set JVM_OPTIONS=%%a
@endlocal & set "MAYBE_JVM_OPTIONS_PARSER_FAILED=%JVM_OPTIONS%" & set ES_JAVA_OPTS=%JVM_OPTIONS:${ES_TMPDIR}=!ES_TMPDIR!%
if "%MAYBE_JVM_OPTIONS_PARSER_FAILED%" == "jvm_options_parser_failed" (
exit /b 1
)
D:\soft\jdks\jdk1.8.0_422\bin\java.exe %ES_JAVA_OPTS% -Delasticsearch -Des.path.home="%ES_HOME%" -Des.path.conf="%ES_PATH_CONF%" -Des.distribution.flavor="%ES_DISTRIBUTION_FLAVOR%" -Des.distribution.type="%ES_DISTRIBUTION_TYPE%" -Des.bundled_jdk="%ES_BUNDLED_JDK%" -cp "%ES_CLASSPATH%" "org.elasticsearch.bootstrap.Elasticsearch" !newparams!
endlocal
endlocal
exit /b %ERRORLEVEL%
然后,正常启动ES即可,访问: http://localhost:9200/