## 简介
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)
## 后记
有了分布式链路追踪,大家便可以在大量的服务中,方便查看每个请求所经过的调用链。
- 序言
- 开发环境准备
- 环境要求
- 环境安装
- 基础环境安装
- Nacos安装
- Sentinel安装
- 插件安装
- 导入工程
- 运行工程
- 工程测试
- JPower特性
- 系统启动器
- 多终端令牌认证
- 系统鉴权
- 鉴权API
- 鉴权配置
- API权限配置
- 接口放行配置
- 数据权限
- redis缓存
- 动态网关
- 聚合文档
- SaaS多租户
- 概念
- 使用
- Xss防注入
- 日志记录
- 操作日志&错误日志
- SQL打印
- feign请求日志&配置
- gateway日志
- 服务日志打印
- 导入导出
- 字典查询
- 系统文件上传下载
- 接口监控
- 代码生成器
- 配置文件共享
- Mybatis过滤器
- 配置说明
- 高级实战
- nacos动态配置
- Seata分布式事务
- 简介
- docker启动
- 微服务配置
- 微服务远程调用
- 声明式服务调用 Feign
- 熔断机制 Sentinel
- sentinel流控
- 简介
- 微服务配置
- 配置nacos对接
- APM监控&链路追踪
- 简介
- 安装
- 微服务接入
- SpringBootAdmin监控
- ELK分布式日志追踪系统
- ELK简介
- ELK一键部署
- 微服务日志对接ELK
- JPower-Chat
- 配置说明
- 生产部署
- docker部署
- docker安装
- docker-compose安装
- harbor安装
- 部署步骤
- 版本升级
- 1.0.1升级到2.0.0
- 2.0.0升级到2.0.2
- 2.0.2升级2.1.0
- 2.1.0升级到2.1.1
- 2.1.1升级到2.1.2
- 2.1.2升级到2.1.4