- 欢迎使用 SkyWalking
- 观测分析语言 Observability Analysis Language, OAL
- 仪表系统
- 设计目标
- 为什么 SkyWalking 体系中没有使用 MQ?
- 探针简介
- 观测分析平台
- 可视化
- 选择接收器
- 服务自动打点代理
- 手动打点 SDK
- 服务网格探针
- SkyWalking Java 代理支持列表
- 设置
- 协议
- 作用域 Scopes 和字段 Fields
- 概念与设计
- Backend 启动
- Backend 存储
- 安装 Java agent
- Open Fetcher
- 概念与设计总览
- 设置开发环境
- 组件库设置
- 插件自动测试框架
- 使用命令行导出
- 操作名称分组规则
- Spring 注解插件
- Oracle 和 Resin 插件
- 支持忽略自定义的 trace
- 支持自定义增强
- 配置覆盖
- 支持传输层安全性协议(TLS)
- 命名空间
- 令牌认证
- 令牌认证
- 兼容 OpenTracing 的 Skywalking tracer
- 安装 log4j
- 安装 log4j2
- logback 插件
- 应用程序工具包跟踪
- 跨线程追踪
- 通过系统属性动态定义 agent 配置文件
- 插件开发指南
- 在 Kubernetes 中部署
- 通过 ALS 观测服务网格
- UI
- 与 Istio 协作
- 配置 Envoy 来向 SkyWalking 发送度量指标
- 快速入门
- V6 升级
- SkyWalking 跨进程传播的头部协议
- OAP server 支持 gPRC SSL 传输
- 贡献指南
- 数据存储扩展
- 启动模式
- 设置的覆盖
- IP 和端口设置
- 初始化模式
- 集群管理
- 服务器端的跟踪采样
- 慢 SQL 语句设置
- 官方 OAL 脚本
- 告警
- 高级部署
- Metrics Exporter
- TTL
- 动态配置
- 无法打点的网关/代理
- 应用性能指数
- 端点分组参数化
- 后台遥测数据
- Apache SkyWalking 代码提交者
- 如何构建项目
- 新度量指标的源和范围扩展
- 后端存储实体扩展
- 线程转储归并机制
如何构建项目
本文档将帮助你使用 maven 编译构建 SkyWalking 项目, 并指导你对 IDE 进行设置.
构建项目
由于本项目使用了 Git 子模块, 我们不建议使用从 GitHub
tag 或 release 页面下载的源代码来进行编译.
Maven代理
如果需要在代理之后执行构建,请编辑 .mvn/jvm.config 并放置以下属性
-Dhttp.proxyHost=proxy_ip
-Dhttp.proxyPort=proxy_port
-Dhttps.proxyHost=proxy_ip
-Dhttps.proxyPort=proxy_port
-Dhttp.proxyUser=username
-Dhttp.proxyPassword=password
从 GitHub 构建
准备 Git, JDK8+ 和 Maven3.6+
克隆项目
如果从源代码构建一个版本, 克隆时
git clone -b [tag_name] ...
必须指定tag name
.git clone --recurse-submodules https://github.com/apache/skywalking.git cd skywalking/ 或者 git clone https://github.com/apache/skywalking.git cd skywalking/ git submodule init git submodule update
运行
./mvnw clean package -DskipTests
所有编译出来的包都在目录
/dist
下 (Linux 下为 .tar.gz, Windows 下为 .zip).
从 Apache 发行版本源代码构建
- 什么是 Apache 发行版本源代码?
对于每个正式的 Apache 发行版本, 都会有一个完整且独立的源代码压缩包, 其中包含了所有的源代码, 你可以从 SkyWalking Apache 下载页面下载得到. 此时没有任何与 git 相关的东西. 跟着以下步骤操作即可.
- 准备 JDK8+ 和 Maven3.6+
- 运行
./mvnw clean package -DskipTests
- 所有编译出来的包都在目录
/dist
下 (Linux 下为 .tar.gz, Windows 下为 .zip).
高级编译
SkyWalking 是一个复杂的 Maven 项目, 包括许多模块, 其中可能包含一些编译耗时非常长的模块. 如果你只想重新编译项目的某个部分, 有以下选项可以支持:
- 编译打包 agent
./mvnw package -Pagent,dist
或
make build.agent
- 编译打包 backend
./mvnw package -Pbackend,dist
或
make build.backend
- 编译打包 UI
./mvnw package -Pui,dist
或
make build.ui
构建 docker 镜像
我们可以使用根目录下的 Makefile
文件来构建 backend
和 ui
的 docker 镜像.
- 构建所有 docker 镜像
make docker.all
- 构建 oap 服务的 docker 镜像
make docker.oap
- 构建 UI 的 docker 镜像
make docker.ui
HUB
和 TAG
变量用于设置一个 docker 镜像的 REPOSITORY
和 TAG
. 要得到一个名为 bar/oap:foo
的 OAP 镜像, 运行以下命令:
HUB=bar TAG=foo make docker.oap
设置 IntelliJ IDEA
注意: 如果你从Github克隆代码, 请确保已完成 设置 Eclipse IDEskywalking/pom.xml
中添加以下配置:<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/java/main</source>
<source>apm-protocol/apm-network/target/generated-sources/protobuf</source>
<source>apm-collector/apm-collector-remote/collector-remote-grpc-provider/target/generated-sources/protobuf</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<pluginManagement>
<plugins>
<!--此插件的配置仅仅存放 Eclipse m2e 设置, 不会影响任何 Maven 本身的构建. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>[1.8,)</versionRange>
<goals>
<goal>add-source</goal>
</goals>
</pluginExecutionFilter>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
apm-collector-remote/collector-remote-grpc-provider/pom.xml
文件中<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>24.0-jre</version>
</dependency>
./mvnw compile -Dmaven.test.skip=true
maven update
. 执行更新前必须删除并清理项目(将会清理自动生成的 proto 类代码以及编译时生成的 Java 代码)./mvnw compile
编译 collector-remote-grpc-provider
和 apm-protocol
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论