天天看點

鍊路追蹤SkyWalking整合項目以及資料持久化

作者:技術閑聊DD

1. 微服務整合SkyWalking

下圖就是SkyWalking整個架構的示意圖:

鍊路追蹤SkyWalking整合項目以及資料持久化

1.1 通過jar包方式整合

  1. 首先我們将一個簡單的springboot服務打成jar包。
鍊路追蹤SkyWalking整合項目以及資料持久化

将其上傳到Linux伺服器中。

  1. 準備一個啟動腳本,腳本内容如下:
#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=skywalking‐test #Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 位址。
export SW_AGENT_SPAN_LIMIT=2000 #配置鍊路的最大Span數量,預設為 300。
export JAVA_AGENT=‐javaagent:/export/server/apache-skywalking-apm-bin/agent/skywalking‐agent.jar
java $JAVA_AGENT ‐jar skyWalking-test-0.0.1-SNAPSHOT.jar #jar啟動           

等同于

java ‐javaagent:/export/server/apache-skywalking-apm-bin/agent/skywalking‐agent.jar
‐DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
‐DSW_AGENT_NAME=skywalking‐test ‐jar skyWalking-test-0.0.1-SNAPSHOT.jar           

參數名對應agent/config/agent.config配置檔案中的屬性。屬性對應的源碼:org.apache.skywalking.apm.agent.core.conf.Config.java

鍊路追蹤SkyWalking整合項目以及資料持久化

1.2 docker方式安裝以及內建ES

因為Skywalking收集到的資訊一般存儲到ES中,然後在ES中用來檢視,是以我這邊采用ES方式為大家說一下部署方式。

步驟1

啟動elasticsearch,9300:叢集節點之間通信端口,9200:es暴露給外部的端口,”discovery.type=single-node”:單機模式啟動。

#拉取 7.9.3
docker pull elasticsearch:7.9.3
#啟動
docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.9.3           

步驟2

下載下傳安裝 skywalking-oap-server:skywalking的服務端,收集分析應用調用的鍊路資訊,并提供接口給 安裝skywalking-UI。

11800:收集應用調用的端口,12800:提供服務的端口,SW_STORAGE:選擇使用es7作存儲,SW_STORAGE_ES_CLUSTER_NODES:es7的存儲節點位址。

#目前 8.3.0
docker pull apache/skywalking-oap-server:8.3.0-es7
#啟動
docker run --name skywalking -p 11800:11800 -p 12800:12800 --link es:elasticsearch -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 -d apache/skywalking-oap-server:8.3.0-es7           

步驟3

下載下傳安裝 skywalking-ui。

#目前 8.3.0
docker pull apache/skywalking-ui:8.3.0
#啟動
docker run --name skywalking-ui -p 8080:8080 --link skywalking:skywalking -e SW_OAP_ADDRESS=skywalking:12800 -d apache/skywalking-ui:8.3.0           

步驟4

擷取skywalking-agent,監控應用,收集應用資訊并上傳至skywalking-oap-server

下載下傳位址:

https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/8.16.0/apache-skywalking-java-agent-8.16.0.tgz。           

如果要在本地內建到IDEA,就下載下傳到本地,如果需要在Linux完成項目內建,就下載下傳到Linux環境下。

鍊路追蹤SkyWalking整合項目以及資料持久化

整個在LInux環境利用docker部署即完成。

1.2 IDEA中整合Skywalking

步驟1:

将下載下傳好的skywalking-agent進行解壓到本地

鍊路追蹤SkyWalking整合項目以及資料持久化

步驟2:

将資訊配置到IDEA中。

鍊路追蹤SkyWalking整合項目以及資料持久化
鍊路追蹤SkyWalking整合項目以及資料持久化

具體配置資訊如下:

-javaagent:D:\apache-skywalking-java-agent-8.16.0\skywalking-agent\skywalking-agent.jar
-DSW_AGENT_NAME=skyWalking-test;-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.164.128:11800           
  • javaagent:就是我們剛才下載下傳agent的路徑
  • DSWAGENTNAME: 服務名
  • DSWAGENTCOLLECTORBACKENDSERVICES:資料上報位址

啟動項目以後,如下:

鍊路追蹤SkyWalking整合項目以及資料持久化

1.3 Skywalking跨多個微服務跟蹤

Skywalking跨多個微服務跟蹤,隻需要每個微服務啟動時添加javaagent參數即可。

2. Skywalking持久化跟蹤資料

預設使用的H2資料庫存儲 config/application.yml,我們的目标是基于mysql實作跟蹤資料的持久化。

2.1 修改配置檔案

修改config目錄下的application.yml,使用mysql作為持久化存儲的倉庫

鍊路追蹤SkyWalking整合項目以及資料持久化

将下面的改成mysql

鍊路追蹤SkyWalking整合項目以及資料持久化

修改資料庫連結

鍊路追蹤SkyWalking整合項目以及資料持久化

2.1 添加資料庫連接配接驅動包

需要添加mysql資料驅動包,因為在lib目錄下是沒有mysql資料驅動包的,是以修改完配置啟動是會報錯,啟動失敗的。

鍊路追蹤SkyWalking整合項目以及資料持久化

上傳完畢以後重新啟動。

2.3 檢視資料庫表

啟動完畢後,檢視swtest資料庫,可以看到生成了很多表。

鍊路追蹤SkyWalking整合項目以及資料持久化

說明啟動成功了,打開配置對應的位址http://192.168.164.128:8080/,可以看到skywalking的web界面。這時候重新開機skywalking,跟蹤資料就不會丢失。

下一篇會為大家介紹SkyWalking在代碼中的具體使用,希望大家多多關注!!!

繼續閱讀