## 简介
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. 解压,目录:

3. IDEA中为我们要启动的项目添加JVM启动参数


4. 在JVM参数中我们需要指定项目名称和SkyWalking服务的地址,需要注意的是SkyWalking地址不是我们页面访问地址,而且oap的服务地址,端口默认为11800


5. 设置成功后,我们便可以启动项目,正常访问接口后我们就可以在[http://localhost:83](http://localhost:83)中查看到监控数据

## 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. 调用登录接口

3. 访问SkyWalking服务,可看到4条我们刚才的请求记录

4. 点开/auth/login便可以看到完整的调用链

## 后记
有了分布式链路追踪,大家便可以在大量的服务中,方便查看每个请求所经过的调用链。
- 序言
- 开发环境准备
- 环境要求
- 环境安装
- 基础环境安装
- 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