1. 程式人生 > >在微服務框架Demo.MicroServer中新增SkyWalking+SkyApm-dotnet分散式鏈路追蹤系統

在微服務框架Demo.MicroServer中新增SkyWalking+SkyApm-dotnet分散式鏈路追蹤系統

1.APM工具的選取

Apm監測工具很多,這裡選用網上比較火的一款Skywalking。 Skywalking是一個應用效能監控(APM)系統,Skywalking分為服務端Oap、管理介面UI、以及嵌入到程式中的探針Agent部分,大概工作流程就是在程式中新增探針採集各種資料傳送給服務端儲存,然後在UI介面可以看到收集過來的各種監測資料,來完成它的核心使命:效能監控和分散式呼叫鏈追蹤能力。下圖是skywalking官方的一個圖,也可以說明這三者之間的關聯關係

2.服務端(OAP)和介面(UI)的安裝

這裡直接在apache地址:http://skywalking.apache.org/downloads/ 下載了一個6.6.0版本的zip檔案,由於之前在本地的windows上安裝過,發現安裝包裡面有兩個啟動檔案,分別為:startup.bat和startup.sh,分別用於window上啟動和linux啟動,這裡我直接將之前下載好的上傳到linux上來安裝。
  上傳後解壓縮,就會得到以下截圖的幾個檔案   進入到config配置目錄下面,有一個名稱叫application.yml的檔案   對這個配置檔案進行編輯 vim application.yml   我們直接定位到資料儲存部分,也就是節點storage,官方文件裡面也有說明,為了方便快速入門,配置檔案預設採用的是H2儲存,但是推薦使用ElasticSearch儲存,由於之前我安裝過Exceptionless,在這臺機器上已經安裝過elasticsearch(如果沒有安裝過可以網上找下,有很多這方面的文章),所以我這裡將H2部分註釋掉,然後將elasticsearch部分放開,並修改紅色方框裡的兩個配置檔案:
nameSpace: ${SW_NAMESPACE:"exceptionless"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9300}
需要注意的是:第一個SW_NAMESPACE需要與ElasticSearch配置的cluster_name名稱一致   啟動skywalking會佔用四個埠:8080,10800,11800,12800,由於我本機安裝過apollo,8080ui埠已經被佔用,所以這裡我必須要先修改UI介面使用的8080端口才能啟動它。 開始修改UI介面使用的8080埠(如果你的8080埠並沒有被佔用,可以跳過,不用修改) 回到配置目錄的上一級:cd .. 可以看到一個webapp的資料夾
  進入這個目錄:cd webapp/ 然後對webapp.yml檔案進行修改   這裡我將原來server介面下面的port從8080改到8088,然後儲存   配置檔案修改完了,開始啟動skywalking的服務端和UI介面,啟動指令碼放在目錄:apache-skywalking-apm-bin/bin 裡面   上面有說到startup.bat和startup.sh分別用在windows上和linux上啟動,這裡用./startup.sh   啟動命令執行完成之後可以看到OAP和Web兩個專案啟動成功的提示,也就是我們說的服務端和UI介面。 驗證一下,通過配置的ip+8088埠(如果沒有修改則是預設的8080)來訪問一下介面,如圖: 至此,我們準備工作做完了,下面我們在程式中安裝探針,來採集資料.  

3.安裝探針(Agent)採集資料

由於Skywalking本身是採用java編寫的,所以SkyApm-dotnet這個專案就是專門為 .NET 開發的探針,目前支援 ASP.NET Core 以及 ASP.NET,下面我們將SkyApm-dotnet無侵入式的整合到.Net Core實現的微服務專案中   第一步:使用下面的命令來進行 Agent 的安裝,這裡據說需要以管理員身份執行
dotnet tool install -g SkyAPM.DotNet.CLI

 

第二步:新增環境變數,可以直接在launchSettings.json檔案中新增以下程式碼來設定
"environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "Demo.MicroServer.UserService"
      }

 

第三步:在程式中安裝NuGet包:SkyAPM.Agent.AspNetCore

 

第四步:在應用程式根目錄下使用以下命令生成skyapm.json的配置檔案,[service name]替換為服務的名稱,[server]替換為Skywalking安裝的計器ip

dotnet skyapm config [service name] [server]:11800

執行完成之後可以看到目錄下面已經生成了一個skyapm.json的檔案,將其屬性複製到輸出目錄設定為如果較新則複製,我這裡是用之前釋出在github上的微服務框架中的一個例項來測試的,所有程式碼均已上傳,需要的可以通過頁面又上角Github地址獲取程式碼

 

4.採集資料並檢視

在Swagger中隨便呼叫幾個介面來測試資料的採集情況,然後到UI介面檢視資料,流程順利的話,可以看到資料已經都有采集到

 

基本工作都已經完成,這個裡面還有很多玩法,快動手試試吧。