Apache SkyWalking 為.NET Core帶來開箱即用的分布式追蹤和應用性能監控


在大型網站系統設計中,隨着分布式架構,特別是微服務架構的流行,我們將系統解耦成更小的單元,通過不斷的添加新的、小的模塊或者重用已經有的模塊來構建復雜的系統。隨着模塊的不斷增多,一次請求可能會涉及到十幾個甚至幾十個服務的協同處理,那么如何准確快速的定位到線上故障和性能瓶頸,便成為我們不得不面對的棘手問題。

為解決分布式架構中復雜的服務定位和性能問題,Google在論文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》中提出了分布式跟蹤系統的設計和構建思路。在這樣的背景下,Apache SkyWalking創建於2015年,參考Dapper論文實現分布式追蹤功能,並逐漸進化為一個完整功能的Application Performance Management系統,用於追蹤、監控和診斷大型分布式系統,尤其是容器和雲原生下的微服務系統。

今年初我在嘗試使用.NET Core構建分布式追蹤系統Butterfly時接觸到SkyWalking團隊,開始和SkyWalking團隊合作探索SkyWalking對.NET Core的支持,並於4月發布SkyWalking .NET Core探針的第一個版本,同時我也有幸加入SkyWalking團隊共同進行SkyWalking在多語言生態的推動。在.NET Core探針v0.1版本發布之后,得到了一些同學的嘗鮮使用,也得到諸多改進的建議。經過幾周的迭代,SkyWalking .NET Core探針於今天發布v0.2 release,在v0.1的基礎上增加了穩定性和HttpClient及數據庫驅動的追蹤支持。

在使用SkyWalking對.NET Core應用追蹤之前,我們需要先部署SkyWalking Collector收集分析Trace和Elasticsearch作為Trace數據存儲。SkyWalking支持5.x的ES,所以我們需要下載安裝對應版本的ES,並配置ES的cluster.nameCollectorDBCluster。然后部署SkyWalking 5.0 beta或更高版本(下載地址:http://skywalking.apache.org/downloads/)。更詳細的Collector部署文檔,請參考Deploy-backend-in-standalone-modeDeploy-backend-in-cluster-mode

最后我們使用示例項目來演示在.NET Core應用中使用SkyWalking進行追蹤和監控,克隆SkyWalking-NetCore項目到本地

git clone https://github.com/OpenSkywalking/skywalking-netcore.git

進入skywalking-netcore目錄

cd skywalking-netcore

還原nuget package:

dotnet restore

啟動示例項目:

dotnet run -p sample/SkyWalking.Sample.Backend
dotnet run -p sample/SkyWalking.Sample.Frontend

訪問示例應用 http://localhost:5001/api/values
打開SkyWalking WebUI即可看到我們的應用監控面板 http://localhost:8080

Dashboard視圖

TopologyMap視圖

Application視圖

Trace視圖

TraceDetails視圖

  1. SkyWalking Github Repo: https://github.com/apache/incubator-skywalking
  2. SkyWalking-NetCore Github Repo: https://github.com/OpenSkywalking/skywalking-netcore
  3. 本文首發地址:個人博客-傾竹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM