多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 简介 SkyWalking是使用了探针的方式来对服务进行监控的,所以我们的服务如果要接入SkyWalking就先必须接入探针。 ## 何为探针 笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控与分析。甚至干预虚拟机的运行。 Java Agent 又叫做 Java 探针,Java Agent 是在 JDK1.5 引入的,是一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能,这种就是 Java Agent 技术。 从用户使用层面来看,Java Agent 一般通过在应用启动参数中添加 -javaagent 参数添加 ClassFileTransformer 字节码转换器。 在 Java 虚拟机启动时,执 行main() 函数之前,Java 虚拟机会先找到 -javaagent 命令指定 jar 包,然后执行 premain-class 中的 premain() 方法。用一句概括其功能的话就是:main() 函数之前的一个拦截器。 ## IDEA 部署探针 1. [下载SkyWalking](https://mirrors.bfsu.edu.cn/apache/skywalking) 2. 解压,目录: ![](https://img.kancloud.cn/be/99/be99b569e78a11d4482a1523dfd936e2_885x295.png) 3. IDEA中为我们要启动的项目添加JVM启动参数 ![](https://img.kancloud.cn/66/8c/668c15832f6d922d23456d2bd4b14a66_481x345.png) ![](https://img.kancloud.cn/3c/d8/3cd89e3e44e32d0642b4475319f0e7fd_1526x691.png) 4. 在JVM参数中我们需要指定项目名称和SkyWalking服务的地址,需要注意的是SkyWalking地址不是我们页面访问地址,而且oap的服务地址,端口默认为11800 ![](https://img.kancloud.cn/95/31/95312b136c1d24a3404dea3b40680dcf_1280x691.png) ![](https://img.kancloud.cn/32/9c/329c87bd3ff5eb359745b303e413f90a_1280x691.png) 5. 设置成功后,我们便可以启动项目,正常访问接口后我们就可以在[http://localhost:83](http://localhost:83)中查看到监控数据 ![](https://img.kancloud.cn/88/93/88931b0f233f591ee413fc87cfbe2c7d_3440x1248.png) ## Jar部署探针 1. 平时我们启动jar包命令为`java -jar jpower-system-exec.jar` 2. 在要接入SkyWalking时,我们需要指定探针的路径,并设置服务名和oap服务地址,具体启动命令如下 > java -javaagent:D:\javaDev\apache\-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=pearl-test -Dskywalking.collector.backend_service=192.168.58.161:11800 -jar jpower-system-exec.jar ## docker-compose部署探针 * 在docker-compose中部署我们的项目,需要先把探针映射到容器内,然后再通过环境变量指定探针,具体docker-compose脚本如下 ~~~ jpower-system: image: "localhost:99/jpower/system-server:1.0.1-SNAPSHOT" privileged: true volumes: # skywalking指针得目录,需要映射到容器,如果skywalking指针得目录在宿主机上得位置改变了这里也需要修改 - /docker/skywalking/agent/:/jpower/skywalking/agent/ environment: - JAVA_TOOL_OPTIONS=-javaagent:/jpower/skywalking/agent/skywalking-agent.jar - SW_AGENT_COLLECTOR_BACKEND_SERVICES=skywalking-oap:11800 restart: always networks: - jpower_net ~~~ * 其中localhost:99为harbor仓库地址,具体harbor安装以及使用查看[harbor安装](./生产部署/docker部署/harbor安装.md) ## 链路追踪 1. 我们启动SkyWalking并把我们的服务接入并启动后,利用SkyWalking可以实现链路追踪日志 2. 调用登录接口 ![](https://img.kancloud.cn/5b/3c/5b3ca57a01a215b574ef68a0672c40b4_3037x1127.png) 3. 访问SkyWalking服务,可看到4条我们刚才的请求记录 ![](https://img.kancloud.cn/cf/21/cf2156d33134212f2c7dfae09586726b_868x468.png) 4. 点开/auth/login便可以看到完整的调用链 ![](https://img.kancloud.cn/16/c6/16c6ea03382ad09bcbb5cf87c3926dd6_3440x1248.png) ## 后记 有了分布式链路追踪,大家便可以在大量的服务中,方便查看每个请求所经过的调用链。