## 簡介
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