.NET Core整合SkyWalking+SkyAPM-dotne實現分散式鏈路追蹤
.NET Core整合SkyWalking+SkyAPM-dotnet實現分散式鏈路追蹤
SkyWalking是一款APM(應用效能管理),其他的還有Cat、Zipkin、Pinpoint等。
隨著微服務架構的流行,一次請求會涉及多個服務的呼叫,並且服務本身也可能會依賴其他服務,整個請求路徑會構成一個呼叫鏈,當某個節點發生異常時,整個呼叫鏈的穩定性都會受到影響,SkyWalking可以幫助理解系統行為和分析效能問題。SkyWalking包括了分散式追蹤、效能指標分析、應用和服務依賴分析等。 雖然目前市面許多APM系統,但目前.NET上只有SkyWalking可用,通過使用SkyAPM-dotnet,感覺大佬們無私的奉獻。一,SkyWalking安裝
開啟連結https://archive.apache.org/dist/skywalking,由於目前SkyAPM-dotnet最大僅支援7.0.0,因此最多僅能選擇這個版本。
選擇此包進行下載,由於7.0.0版本目前還無映象,下載較慢,可以通過百度網盤的離線下載功能進行下載,速度會快一點。預設佔用8080, 10800, 11800, 12800埠。
下載完成後,解壓,windows下,開啟apache-skywalking-apm-bin\bin\startup.bat,會彈出兩個框:
瀏覽器開啟http://localhost:8080/,出現SkyWalking管理介面既視為啟動成功,關閉上面兩框則會關閉SkyWalking服務。
二,.NET Core專案整合SkyAPM-dotnet
新建一個web專案,安裝nuget包SkyAPM.Agent.AspNetCore在我寫部落格的這會,剛剛更新了1.1.0版本,我用.NET Core 3.1試了1.1.0和1.0.0版本,雖然沒有報錯,但一直沒捕捉到連結請求,最後用了0.9.0,有興趣的博友們可以自己慢慢嘗試。
新建配置檔案skyapm.json,修改實際的ip地址
1 { 2 "SkyWalking": { 3 "ServiceName": "asp-net-core-aspnetcore", 4 "Namespace": "", 5 "HeaderVersions": [ 6 "sw6" 7 ], 8 "Sampling": { 9 "SamplePer3Secs": -1, 10 "Percentage": -1.0 11 }, 12 "Logging": { 13 "Level": "Information", 14 "FilePath": "logs/skyapm-{Date}.log" 15 }, 16 "Transport": { 17 "Interval": 3000, 18 "ProtocolVersion": "v6", 19 "QueueSize": 30000, 20 "BatchSize": 3000, 21 "gRPC": { 22 "Servers": "192.168.1.148:11800", 23 "Timeout": 10000, 24 "ConnectTimeout": 10000, 25 "ReportTimeout": 600000 26 } 27 } 28 } 29 }
新增環境變數 "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES":"SkyAPM.Agent.AspNetCore"
可修改launchSettings.json檔案
也可在Program.cs中配置
Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");
到此,配置完成,啟動專案。
瀏覽器訪問http://localhost:8080/,開啟追蹤Tab,時間範圍那有點bug,需要調整下結束時間,不然資料出不來。
詳細的各位博友慢慢研究。附上SkyApm-dotnet示例程式碼:https://github.com/SkyAPM/SkyAPM-dotnet/tree/master/sample