⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/SkyWalking/videos/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

01 - 通过 Skywalking-5.x 版本的源码构建并运行

视频地址 👉 :哔哩哔哩 | 腾讯视频

参考:

源码地址

https://github.com/apache/incubator-skywalking.git

从GitHub下载代码编译

在IntelliJ IDEA中编译工程

  • 准备环境: git, jdk8,Maven
  • git clone https://github.com/apache/incubator-skywalking.git
  • cd incubator-skywalking/
  • git checkout -b 5.x
  • git submodule init
  • git submodule update
  • mvn clean package -DskipTests
  • /incubator-skywalking/apm-protocol/apm-network/target/generated-sources/protobuf目录下面grpc-javajava目录右键设置为Generated Rources Root.
  • apm-collector/apm-collector-remote/apm-remote-grpc-provider/target/generated-sources/protobuf目录下面grpc-javajava目录右键设置为Generated Rources Root.

Elasticsearch 启动:

https://github.com/JaredTan95/skywalking-docker/blob/master/elasticsearch-5.6.10-Zone-Asia-SH/README.md

Skywalking 相关配置说明

#cluster:
# zookeeper:
# hostPort: localhost:2181,localhost:2182 #zookeeper集群地址
# sessionTimeout: 100000
configuration:
default:
#namespace: xxxxx
# alarm threshold
applicationApdexThreshold: 2000 #应用性能指数阀值,Apdex含义请参考如下
serviceErrorRateThreshold: 10.00 #服务错误率阀值
serviceAverageResponseTimeThreshold: 2000 #服务平均响应时间阀值
instanceErrorRateThreshold: 10.00 #实例错误率阀值
instanceAverageResponseTimeThreshold: 2000 #实例平均响应时间阀值
applicationErrorRateThreshold: 10.00 #应用错误率阀值
applicationAverageResponseTimeThreshold: 2000 #应用平均响应时间阀值
# thermodynamic
thermodynamicResponseTimeStep: 50 #热力图响应时间
thermodynamicCountOfResponseTimeSteps: 40 #热力图的响应时间步长数量
# max collection's size of worker cache collection, setting it smaller when collector OutOfMemory crashed.
workerCacheMaxSize: 10000 #最大工作缓存数量

# Apdex
# 性能指数:
# Apdex(Application Performance Index)是一个国际通用标准,
# Apdex 是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,
# 把最终用户的体验和应用性能作为一个完整的指标进行统一度量。
# 如何计算 Apdex:基于“响应性”,Apdex 定义了 3 个用户满意度区间( OneAPM 默认定义的 T 值为 0.5 秒):
# 满意:这样的响应时间让用户感到很愉快,响应时间少于 T 秒钟。
# 容忍:慢了一点,但还可以接受,继续这一应用过程,响应时间 T~4T 秒。
# 失望:太慢了,受不了了,用户决定放弃这个应用,响应时间超过 4T 秒。
storage:
elasticsearch:
clusterName: elasticsearch #Elasticsearch集群名称,默认为elasticsearch
clusterTransportSniffer: false
clusterNodes: localhost:9300 #Elasticsearch连接,默认localhost:9300
indexShardsNumber: 2
indexReplicasNumber: 0
highPerformanceMode: true
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: 2000 # Execute the bulk every 2000 requests
bulkSize: 20 # flush the bulk every 20mb
flushInterval: 10 # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: 2 # the number of concurrent requests
# Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
traceDataTTL: 90 #追踪数据滚动删除周期,默认90分钟
minuteMetricDataTTL: 90 #分钟监控数据滚动删除周期,默认90分钟
hourMetricDataTTL: 36 #小时监控数据滚动删除周期,默认36小时
dayMetricDataTTL: 45 #天监控数据滚动删除周期,默认45天
monthMetricDataTTL: 18 #月监控数据滚动删除周期,默认18个月

02 - 通过 Skywalking-6.x 版本的源码构建并运行

👉:哔哩哔哩 | 腾讯视频

编译参考:

https://github.com/apache/incubator-skywalking/blob/master/docs/en/guides/How-to-build.md

Elasticsearch配置

  • 通过Docker快速启动

    docker run -p 9200:9200 -p 9300:9300 -e cluster.name=elasticsearch -d wutang/elasticsearch-shanghai-zone:6.3.2

注意:Skywalking 6.0.0使用端口:9200

03 - 03 Java (Spring Boot)应用的接入

哔哩哔哩 | 腾讯视频

参考Skywalking Github:Setup java agent

@Trace注解的使用

通过IDEA进行调试接入

-javaagent:incubator-skywalking/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.application_code=hello-world-demo
-Dskywalking.collector.backend_service=localhost:11800

通过Jar包方式接入

java -javaagent:/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.collector.backend_service=localhost -Dskywalking.agent.application_code=hello-world-demo-0004 -jar target/sky-demo-1.0-SNAPSHOT.jar

通过容器接入

  • Dockerfile

FROM openjdk:8-jre-alpine

LABEL maintainer="tanjian20150101@gmail.com"

ENV SW_APPLICATION_CODE=java-agent-demo \
SW_COLLECTOR_SERVERS=localhost:11800

COPY skywalking-agent /apache-skywalking-apm-incubating/agent

COPY target/sky-demo-1.0-SNAPSHOT.jar /demo.jar

ENTRYPOINT java -javaagent:/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.collector.backend_service=${SW_COLLECTOR_SERVERS} \
-Dskywalking.agent.application_code=${SW_APPLICATION_CODE} -jar /demo.jar

  • 构建并运行

docker build -t hello-demo .
docker run -p 10101:10101 -e SW_APPLICATION_CODE=hello-world-demo-005 -e SW_COLLECTOR_SERVERS=127.10.0.2:11800 hello-demo

文章目录
  1. 1. 01 - 通过 Skywalking-5.x 版本的源码构建并运行
    1. 1.1. 参考:
    2. 1.2. 源码地址
    3. 1.3. 从GitHub下载代码编译
      1. 1.3.1. 在IntelliJ IDEA中编译工程
    4. 1.4. Elasticsearch 启动:
    5. 1.5. Skywalking 相关配置说明
  2. 2. 02 - 通过 Skywalking-6.x 版本的源码构建并运行
    1. 2.1. 编译参考:
    2. 2.2. Elasticsearch配置
  3. 3. 03 - 03 Java (Spring Boot)应用的接入
    1. 3.1. 通过IDEA进行调试接入
    2. 3.2. 通过Jar包方式接入
    3. 3.3. 通过容器接入