在 ASP.NET Core 中集成 Skywalking APM
前言
大家好,今天給大家介紹一下如何在 ASP.NET Core 項目中集成 Skywalking,Skywalking 是 Apache 基金會下面的一個開源 APM 項目,有些同學可能會 APM 是干什么用的還不是太了解,那么下面我就簡單的來說一下。
APM 全稱是 (Application Performance Monitor)應用性能監(jiān)測軟件,主要是用來處理以及追蹤分布式系統(tǒng)中的應用程序的性能問題,從而快速找出問題的根源,進而可以讓開發(fā)者定位問題從而提升應用程序性能。
Skywalking 是一個APM系統(tǒng),為微服務架構(gòu)和云原生架構(gòu)系統(tǒng)設計,它通過客戶端探針自動收集追蹤性能所需的指標,并進行分布式追蹤。通過這些調(diào)用鏈路以及指標,Skywalking 可以感知應用間關系和服務間關系,并進行相應的指標統(tǒng)計及展示。
.NET 探針
為了能夠讓APM的服務端正確的收集到追蹤及分析所需的指標,就需要有客戶端程序附屬到你的應用程序上進行數(shù)據(jù)的上報,那么這個附屬的程序就叫做探針(Agent)。
Skywalking 使用 Java 程序開發(fā),默認提供了 Java 探針,那么在 .NET 系統(tǒng)中,就需要有 .NET 相關的探針才能夠正確的將數(shù)據(jù)上報的服務端,所以 skywalking-netcore 這個項目就是專門為 .NET 開發(fā)的探針,目前支持 ASP.NET Core 以及 ASP.NET,下面我具體的來說一下這個項目吧。
.NET 探針項目:https://github.com/OpenSkywalking/skywalking-netcore
這個項目位于 OpenSkywalking 組織下是由 Skywalking 作者 吳晟 大佬發(fā)起的,主要開發(fā)者是 Lemon 同學,雖然我也是組織成員之一,但是只做了一些打雜的工作以及對 CAP 消息追蹤的支持工作,感興趣的同學歡迎 Github Star 一波...
好了,我們還是主要說一下怎么在 ASP.NET Core 中集成 Skywalking 吧。
ASP.NET Core 集成
在新版本的 Skywalking .NET Agent 中,我們實現(xiàn)了對 ASP.NET Core 應用程序無入侵的集成方式,這使得你可以更加方便的開啟或者關閉探針數(shù)據(jù)的收集而不用修改任何代碼。比如你可以在生產(chǎn)環(huán)境遇到性能問題時候啟動它快速的定位問題,而在問題處理完成之后再關掉,非常的方便,下面我們來說一下集成的步驟。
Step 1
我們提供給了dotnet 的擴展 CLI 工具以供開發(fā)者使用從而進行集成,首先使用下面的命令來進行 Agent 的安裝
dotnet tool install -g SkyWalking.DotNet.CLI安裝完成之后,你可以在命令行中使用 dotnet skywalking 或者是 dotnet-skywalking 提供的命令來安裝 .NET Agent 到你的本機或者容器中。
// 注意需要在管理員權(quán)限下運行dotnet skywalking installStep 2
接下來,我們需要向環(huán)境變量中添加幾個參數(shù):
Windows
set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcoreset ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCoreLinux
export DOTNET_ADDITIONAL_DEPS=/usr/local/share/dotnet/x64/additionalDeps/skywalking.agent.aspnetcoreexport ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCoreStep 3
然后,你需要給你要集成的應用取一個名字,例如我使用以下方式創(chuàng)建一個示例程序:
dotnet new mvc -n mvcdemo以上命令會生成一個名為 mvcdemo 默認的 ASP.NET MVC 項目,我們需要給項目搞一個代號以便讓服務端識別,就取代號名為 mvc_sample 吧,然后把這個代號使用下面的命令也添加到環(huán)境變量里面。
**Windows**set SKYWALKING__APPLICATIONCODE=mvc_sample**Linux**export SKYWALKING__APPLICATIONCODE=mvc_sampleStep 4
最后一步就是我們需要第一步的 CLI 工具生成一個配置文件,從而配置各種參數(shù),使用以下命令生成一個配置文件:
// 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}}} }以上,就是所有的配置工作,接下來就可以開始啟動了。
啟動你的項目
啟動很簡單,按照你習慣的常規(guī)方式使用 dotnet run 或者 dotnet mvcdemo.dll 來運行你的項目即可。
然后你就可以去 Skywalking 服務端 UI 上面看到 API 的追蹤信息了。
下面是Skywalking的幾個追蹤界面截圖,大家可以用 UI 上大致了解下:
最后
最后當然是廣告時間,哈哈哈~~~
你還在為了解消息隊列的復雜機制而苦惱嗎?
你還在為找不到一個順手的 EventBus 搜遍百度谷歌嗎?
你還在為項目中遇到的分布式事務問題而抱頭痛哭嗎?
不要慌,不要急,有了她,讓你少掉發(fā)!早下班!
她就是 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
本文原創(chuàng)授權(quán)為:署名 - 非商業(yè)性使用 - 禁止演繹,協(xié)議普通文本 | 協(xié)議法律文本
總結(jié)
以上是生活随笔為你收集整理的在 ASP.NET Core 中集成 Skywalking APM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ChaosConf 2018:混沌实验的
- 下一篇: React Native的安装和初始化(