一、前言
SkyWalking针对的是微服务和分布式服务,包括现在的容器化。在这样的环境中,应用间依赖关系复杂多变,无论是设计、开发还是运维团队,都不具备对系统实际关系和运行情况的理解能力。主流大型企业的内部系统都有几十个子系统,其中有上百个服务和上千个实例在运行,理解这套系统的依赖关系是SkyWalking要解决的第一大问题。
Skywalking创始人是中国人吴晟,他是Apache软件基金会第一位中国董事。
GitHub地址:https://github.com/apache/skywalking
二、安装运行
# 下载源码
git clone https://github.com/apache/skywalking.git
cd skywalking/
# 切换分支
git checkout v8.5.0
git submodule init
# 这里容易超时,注意检查,可以多试几次
git submodule update
# maven编译 windows
mvnw clean package -DskipTests
# maven编译 mac
./mvnw clean package -DskipTests
编译时间比较长(运气不好要半个小时),请耐心等待。所有打出来的包都在目录/dist 下
解压/dist/apache-skywalking-apm-bin.tar.gz
# 运行
sh startup.sh
三、使用
SkyWalking的使用是无代码侵入的,而这种无侵入是基于Java的JavaAgent技术。
JavaAgent在字节码文件生成Class对象之前对字节码文件进行修改。
使用方法就是添加-javaagent:xxx.jar
。如java -javaagent:xxx.jar
-jar test.jar
# 添加JavaAgent
-javaagent:${absolute path}/skywalking-agent.jar
# 后面传入服务名称参数
-Dskywalking.agent.service_name=serviceName
Idea中 添加JavaAgent:
-javaagent:/Users/liulihu/workplace/development/blog/tools/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=consumer-service
然后进行多次请求(有时候要等一两分钟才能同步过来),可以在监控台看到监控信息。
四、结语
这里这是先尝个鲜,后续有时间再详细说一下JavaAgent原理和Skywalking的实际使用。
源码地址:https://github.com/tigerleeli/xiaohuge-blog/tree/master/spring-cloud-alibaba-skywalking
同步微信公众号:小虎哥的技术博客