最近在学习应用调优诊断等内容.
现在实际工作中实质上的拆分和微服务在售前阶段
所以真正用到链路的地方比较少. 但是人生都是要向前看的.
想着一方面提高自己. 一方面也是为了以后着想.
在一个看不到未来和光的地方, 要么离开,要么继续深入掘进.
Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,
国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,
支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,
跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,
探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,
它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的
From:https://www.jianshu.com/p/ffa7ddcda4ab/
https://skywalking.apache.org/downloads/
我这边仅是学习与研究Java相关的, 其他内容暂时放下不表
注意这里需要下载两个内容:
SkyWalking APM
Java Agent
需要注意 选择 distribution 下载对应的压缩包就可以.
需要注意两个文件比较大一点
137M 3月 9 11:46 apache-skywalking-apm-9.4.0.tar.gz
31M 4月 4 09:43 apache-skywalking-java-agent-8.15.0.tgz
需要注意 apm 是核心应用
agent需要作为一个启动加载方式挂接到springboot的应用中去.
建议将agent进行解压缩放到特定的一个路径
然后在启动脚本里面加进来特定的内容:
注意 主要有三个地方:
定义agent的位置, 不建议只复制 jar包 最好是使用特定路径, 因为agent 还有很多配置文件等.
定义 server_name 可以在apm中进行展示
定义backend_service 定义apm服务器的地址.
端口信息在后续解释.
-javaagent:/skywalking/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=master5202
-Dskywalking.collector.backend_service=127.0.0.1:11800
解压缩apm的压缩包
然后进行相关的处理
注意 初始使用比较核心的是 bin 和 config
├── bin
├── config
├── config-examples
├── LICENSE
├── licenses
├── LICENSE.tpl
├── logs
├── NOTICE
├── oap-libs
├── README.txt
├── tools
├── webapp
└── zipkin-LICENSE
启动脚本说明
bin 目录下面有一个 startup.sh 可以启动两个应用
一个是 oap 一个是 receiver 的工作进程.
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
需要注意 skywalking 至少要用 jdk11.
jdk8 是不支持的为了方便可以如下修改
比如我这边在 startup.sh 上面进行了简单处理
export JAVA_HOME=/skywalking/jdk-17.0.2
export PATH=/skywalking/jdk-17.0.2/bin:$PATH
设置连接nacos等事项
skywalking 默认使用h2来存储部分数据.
也可以使用elasticsearch. 因为是周末自学
所以简单使用 h2. 但是要连接nacos
所以需要修改配置文件
apache-skywalking-apm-bin/conf/application.yml
注意内容为:
nacos:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
hostPort: 10.110.136.xxx:8848
# Nacos Configuration namespace
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
# Nacos auth username
username: nacos
password: xxxxx
会在skywalking的服务,普通服务里面看到对应的服务信息.
也能够看到服务的一些拓扑信息
1.引入skywalking的jar包,导入的包和agent版本一致 org.apache.skywalking apm-toolkit-trace 8.12.0