Apache SkyWalking 爲.NET Core帶來開箱即用的分佈式追蹤和應用性能監控 在大型網站系統設計中,隨着分佈式架構,特別是微服務架構的流行,咱們將系統解耦成更小的單元,經過不斷的添加新的、小的模塊或者重用已經有的模塊來構建複雜的系統。隨着模塊的不斷增多,一次請求可能會涉及到十幾個甚至幾十個服務的協同處理,那麼如何準確快速的定位到線上故障和性能瓶頸,便成爲咱們不得不面對的棘手問題。html
爲解決分佈式架構中複雜的服務定位和性能問題,Google在論文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》中提出了分佈式跟蹤系統的設計和構建思路。在這樣的背景下,Apache SkyWalking建立於2015年,參考Dapper論文實現分佈式追蹤功能,並逐漸進化爲一個完整功能的Application Performance Management系統,用於追蹤、監控和診斷大型分佈式系統,尤爲是容器和雲原生下的微服務系統。git
今年初我在嘗試使用.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及數據庫驅動的追蹤支持。github
在使用SkyWalking對.NET Core應用追蹤以前,咱們須要先部署SkyWalking Collector收集分析Trace和Elasticsearch做爲Trace數據存儲。SkyWalking支持5.x的ES,因此咱們須要下載安裝對應版本的ES,並配置ES的cluster.name爲CollectorDBCluster。而後部署SkyWalking 5.0 beta或更高版本(下載地址:http://skywalking.apache.org/downloads/)。更詳細的Collector部署文檔,請參考Deploy-backend-in-standalone-mode和Deploy-backend-in-cluster-mode。數據庫
最後咱們使用示例項目來演示在.NET Core應用中使用SkyWalking進行追蹤和監控,克隆SkyWalking-NetCore項目到本地apache
git clone https://github.com/OpenSkywalking/skywalking-netcore.git 進入skywalking-netcore目錄api
cd skywalking-netcore 還原nuget package:架構
dotnet restore 啓動示例項目:app
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視圖
SkyWalking Github Repo: https://github.com/apache/incubator-skywalking SkyWalking-NetCore Github Repo: https://github.com/OpenSkywalking/skywalking-netcore 本文首發地址:我的博客-傾竹