在微服務框架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地址獲取代碼java

 

4.採集數據並查看

在Swagger中隨便調用幾個接口來測試數據的採集狀況,而後到UI界面查看數據,流程順利的話,能夠看到數據已經都有采集到

 

基本工做都已經完成,這個裏面還有不少玩法,快動手試試吧。linux

相關文章
相關標籤/搜索