你們好,今天給你們介紹一下如何在 ASP.NET Core 項目中集成 Skywalking,Skywalking 是 Apache 基金會下面的一個開源 APM 項目,有些同窗可能會 APM 是幹什麼用的還不是太瞭解,那麼下面我就簡單的來講一下。html
APM 全稱是 (Application Performance Monitor)應用性能監測軟件,主要是用來處理以及追蹤分佈式系統中的應用程序的性能問題,從而快速找出問題的根源,進而可讓開發者定位問題從而提高應用程序性能。git
Skywalking 是一個APM系統,爲微服務架構和雲原生架構系統設計,它經過客戶端探針自動收集追蹤性能所需的指標,並進行分佈式追蹤。經過這些調用鏈路以及指標,Skywalking 能夠感知應用間關係和服務間關係,並進行相應的指標統計及展現。github
爲了可以讓APM的服務端正確的收集到追蹤及分析所需的指標,就須要有客戶端程序附屬到你的應用程序上進行數據的上報,那麼這個附屬的程序就叫作探針(Agent)。json
Skywalking 使用 Java 程序開發,默認提供了 Java 探針,那麼在 .NET 系統中,就須要有 .NET 相關的探針纔可以正確的將數據上報的服務端,因此 skywalking-netcore 這個項目就是專門爲 .NET 開發的探針,目前支持 ASP.NET Core 以及 ASP.NET,下面我具體的來講一下這個項目吧。架構
.NET 探針項目:https://github.com/OpenSkywalking/skywalking-netcoremvc
這個項目位於 OpenSkywalking 組織下是由 Skywalking 做者 吳晟 大佬發起的,主要開發者是 Lemon 同窗,雖然我也是組織成員之一,可是隻作了一些打雜的工做以及對 CAP 消息追蹤的支持工做,感興趣的同窗歡迎 Github Star 一波...asp.net
好了,咱們仍是主要說一下怎麼在 ASP.NET Core 中集成 Skywalking 吧。分佈式
在新版本的 Skywalking .NET Agent 中,咱們實現了對 ASP.NET Core 應用程序無入侵的集成方式,這使得你能夠更加方便的開啓或者關閉探針數據的收集而不用修改任何代碼。好比你能夠在生產環境遇到性能問題時候啓動它快速的定位問題,而在問題處理完成以後再關掉,很是的方便,下面咱們來講一下集成的步驟。ide
咱們提供給了dotnet 的擴展 CLI 工具以供開發者使用從而進行集成,首先使用下面的命令來進行 Agent 的安裝微服務
dotnet tool install -g SkyWalking.DotNet.CLI
安裝完成以後,你能夠在命令行中使用 dotnet skywalking
或者是 dotnet-skywalking
提供的命令來安裝 .NET Agent 到你的本機或者容器中。
// 注意須要在管理員權限下運行 dotnet skywalking install
接下來,咱們須要向環境變量中添加幾個參數:
Windows
set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcore set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore
Linux
export DOTNET_ADDITIONAL_DEPS=/usr/local/share/dotnet/x64/additionalDeps/skywalking.agent.aspnetcore export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore
而後,你須要給你要集成的應用取一個名字,例如我使用如下方式建立一個示例程序:
dotnet new mvc -n mvcdemo
以上命令會生成一個名爲 mvcdemo
默認的 ASP.NET MVC 項目,咱們須要給項目搞一個代號以便讓服務端識別,就取代號名爲 mvc_sample
吧,而後把這個代號使用下面的命令也添加到環境變量裏面。
**Windows** set SKYWALKING__APPLICATIONCODE=mvc_sample **Linux** export SKYWALKING__APPLICATIONCODE=mvc_sample
最後一步就是咱們須要第一步的 CLI 工具生成一個配置文件,從而配置各類參數,使用如下命令生成一個配置文件:
// mvc_sample 爲上面 step 3 的代號, localhost:11800 爲 Skywalking 服務端的地址 dotnet skywalking config mvc_sample localhost:11800
上面的命令會在你的項目文件夾下生成一個名爲 skywalking.json
的json文件,裏面是配置信息,你能夠酌情修改,以下:
skywalking.json
{ "SkyWalking": { "ApplicationCode": "Frontend", "SpanLimitPerSegment": 300, "Sampling": { "SamplePer3Secs": -1 }, "Logging": { "Level": "Information", "FilePath": "logs\\SkyWalking-{Date}.log" }, "Transport": { "Interval": 3000, "PendingSegmentLimit": 30000, "PendingSegmentTimeout": 1000, "gRPC": { "Servers": "localhost:11800", "Timeout": 2000, "ConnectTimeout": 10000 } } } }
以上,就是全部的配置工做,接下來就能夠開始啓動了。
啓動很簡單,按照你習慣的常規方式使用 dotnet run
或者 dotnet mvcdemo.dll
來運行你的項目便可。
而後你就能夠去 Skywalking 服務端 UI 上面看到 API 的追蹤信息了。
下面是Skywalking的幾個追蹤界面截圖,你們能夠用 UI 上大體瞭解下:
最後固然是廣告時間,哈哈哈~~~
你還在爲了解消息隊列的複雜機制而苦惱嗎?
你還在爲找不到一個順手的 EventBus 搜遍百度谷歌嗎?
你還在爲項目中遇到的分佈式事務問題而抱頭痛哭嗎?
不要慌,不要急,有了她,讓你少掉髮!早下班!
她就是 CAP:https://github.com/dotnetcore/CAP
一個分佈式事務解決方案,同時具備 EventBus 的全部功能,什麼?你說價格?不要99,也不要9塊9,免費開源MIT,重要的是有 手把手視頻,
有了她,讓你多些時間陪陪家人,會會朋友,作作大保健~
若是你以爲這個開源項目還不錯,給個Github Star 支持一下那就太好了。
若是你以爲本篇文章對你有幫助的話,能夠關注一下博主,順手點個【推薦】哦。
本文地址:http://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html
做者博客:Savorboard
本文原創受權爲:署名 - 非商業性使用 - 禁止演繹,協議普通文本 | 協議法律文本